코딩코딩

[프로그래머스] level1 - 신규 아이디 추천 : 파이썬(Python) 풀이

Jerry Jun 2021. 5. 4. 16:08
728x90

문제

프로그래머스 level1 신규 아이디 추천(파이썬)

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

 

코드

def solution(new_id):
    new_id = new_id.lower()
    # 2 ~ 3단계
    new = []
    new_id = list(new_id)
    check = 0

    for i in new_id:
        if ((ord(i) >=97 and ord(i) <= 122) or (ord(i) >= 48 and ord(i) <= 57) or i == '-' or i == '_'):
            new.append(i)
            check = 0
        elif i == '.':
            if(check == 0):
                check = 1
                new.append(i)

    try:
        if new[0] == '.':
            del new[0]
        if new[-1] == '.':
            new.pop()
    except:
        pass
    new_id = "".join(new)

    if len(new_id) == 0:
        new_id += 'a'

    if len(new_id) >= 16:
        new_id = new_id[:15]
        if new_id[-1] == '.':
            new_id = new_id[:14]
    elif len(new_id) == 1:
        new_id = new_id + new_id + new_id
    elif len(new_id) == 2:
        new_id += new_id[-1]

    return new_id

 

풀이

2021년 카카오에서 출제한 코딩테스트이다.

 

단계별로 체크해야 할 것이 많아 코드가 긴 편이다. 물론 더 생각한다면 줄일 수 있겠지만 프로그래머스를 통해 1차적으로 통과한 코드를 업로드하였다.

 

1단계 : 소문자로 치환하는 것은 lower( ) 함수를 통해 간단히 마무리했다.

2단계 : chr( ) 함수를 통해 문자의 아스키코드를 참고하여 필터링하였다.

3단계 : 마침표가 연속인 부분은 check 함수를 활용하여 구분하였다.

4단계 : 마침표가 처음이나 끝에 위치한 것은 인덱스를 통해 파악하여 제거하였다.

5단계 : 문자열은 + 를 통해 추가된다.

6~7단계 : if 문을 이용해 간단히 완료했다.

 

이번 문제는 어렵다기 보다는 차근차근 풀면 쉬운 문제였던 거 같다.

 

인증 사진
프로그래머스 표지

300x250