생각과 고민이 담긴 코드

프로그래머스 - 신규 아이디 추천 (2021 KAKAO 블라인드 채용) / Level 1 본문

Algorithm/프로그래머스

프로그래머스 - 신규 아이디 추천 (2021 KAKAO 블라인드 채용) / Level 1

0_Hun 2021. 12. 12. 17:11

문제 : https://programmers.co.kr/learn/courses/30/lessons/72410

 

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

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

programmers.co.kr

 

풀이

def solution(new_id):
    target = "0123456789abcdefghijklmnopqrstuvwxyz-_."
    new_id = list(new_id)
    i = 0
    j = 0
    dot_cnt = 0
    
    while i < len(new_id):  # 1, 2단계
        new_id[i] = new_id[i].lower()
        
        if new_id[i] not in target:
            new_id.remove(new_id[i])
            i -= 1
        i += 1
    
    while j < len(new_id):  # 3단계
        
        if new_id[j] == '.':
            dot_cnt += 1
            if dot_cnt > 1:
                new_id.pop(j)
            else:
                j += 1
        else:
            dot_cnt = 0
            j += 1
    
    if len(new_id) != 0 and new_id[0] == '.':  # 4단계
        new_id.pop(0)
    if len(new_id) != 0 and new_id[-1] == '.':
        new_id.pop(-1)
    
    if not new_id:  # 5단계
        new_id.append('a')
    
    if len(new_id) >= 16:  # 6단계
        new_id = new_id[:15]
    if len(new_id) != 0 and new_id[-1] == '.':
        new_id.pop(-1)
    
    if len(new_id) <= 2:  # 7단계
        while len(new_id) < 3:
            new_id.append(new_id[-1])
    
    return "".join(new_id)

각 단계마다 시키는 대로 구현하면 쉬운 문제이다.

다른 사람들의 풀이도 공부해봤는데

정규식을 이용해 구현한 사람도 있었으며

2단계에서 isalpha() 과 isdigit()를 이용하여 더 쉽게 구현한 풀이도 있었다.

 

이런 쉬운 문제를 풀 때 제일 중요한 건 막힘 없이 빠르게 풀고 넘어가는 것이다.