2021 KAKAO BLIND RECRUITMENT

코딩테스트 연습에 공개된 문제는 (주)그렙이 저작권을 가지고 있습니다.
(지문 하단에 별도 저작권 표시 문제 제외)
코딩테스트 연습 문제의 지문, 테스트케이스, 풀이 등과 같은 정보는 비상업적, 비영리적 용도로 게시할 수 있습니다.

코딩테스트 정보

  • 프로그래머스
  • python
  • level 1
  • 점수 : 캡쳐 못함
  • 문제 링크


문제

문제 내용은 프로그래머스 참고


풀이 코드

풀이 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
def solution(new_id):
    answer = ''
    
    #1단계 : 소문자로 바꾸기
    new_id = new_id.lower()
    
    #2단계 : 소문자,숫자, 알파벳, 빼기, 밑줄, 마침표 제외한 문자 제거
    for i in new_id:
        if i.isalpha() or i.isdigit() or i == "-" or i =="_" or i == ".":
            answer += i
    
    #3단계 : 마침표가 2번 이상 반복될 경우 하나의 마침표로 치환
    while answer.count("..") != 0:
        answer = answer.replace("..", ".")
    
    #4단계 : 마침표가 처음이나 끝에 위치할 경우 제거
    if answer[0] == ".":
        answer = answer[1:] if len(answer) > 1 else 'a'
    if answer[-1] == ".":
        answer = answer[:-1]
    
    #5단계 : new_id가 빈 문자열일 경우, a를 대입
    if answer == "":
        answer = "a"
    
    #6단계 : 길이 16자 이상 -> 첫 15자만 출력
    #뒷자리 제거 후 마침표가 가장 마지막에 있으면 해당 문자 제거
    if len(answer) > 15:
        answer = answer[:15]
        if answer[-1] == ".":
            answer = answer[:-1]
    
    #7단계 : 길이 2자 이하라면 마지막 문자를 길이 3이 될 때까지 반복해서 끝에 붙임
    if len(answer) < 3:
        answer = answer + answer[-1] * (3 - len(answer))
    
    return answer


풀이 방식

■■■■ 접근 방식 ■■■■

그냥 문제에서 요구하는 바를 하나씩 if 문으로 처리


리뷰

다른 풀이를 보니, 정규표현식을 이용한다.
코드 길이가 훨씬 줄어든다.

https://velog.io/@hammii/프로그래머스-신규-아이디-추천-java-2021-KAKAO-BLIND-RECRUITMENT