본문 바로가기
Computer Science/Algorithm

[프로그래머스] 신규 아이디 추천 (Level 1) (Python)

by 수제햄버거 2021. 7. 3.
728x90
반응형

문제 출처 :

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

 

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

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

programmers.co.kr

문제 풀이 :

  • 2021 년도 카카오 블라인드 코딩테스트에 1번으로 나온 문제이다. 카카오는 보통 3번까지는 무난하게 내고 순서대로 난이도 순서이니 1번은 매우 쉽게 나와있다.
  • 그냥 문제에서 친절하게 설명해준대로 구현을 하면된다.
  • 특히나 파이썬의 경우 소문자로 치환하는 것들은 .lower()와 같은 유용한 함수들 덕분에 더 편하다.
  • 그나마 구현에서 조금 거슬리는 부분은 2번 이상 마침표(.)가 있는 경우에는 마침표(.) 하나만 해야하는데 이거는 따로 변수를 만들어서 관리하였다.
def solution(new_id):
    answer = ''

    #step 1
    new_id = new_id.lower()
    alphabet_low = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    special_str = ['.','-','_']
    num = ['1','2','3','4','5','6','7','8','9','0']

    #step2
    check_double_comma = 0
    new_id_2 =""
    for i in new_id:
        if(i in alphabet_low or i in num):
            new_id_2 += i
            check_double_comma=0
        if(i in special_str):
            #step3
            if(i=='.'):
                if(check_double_comma==0):
                    new_id_2+=i
                    check_double_comma=1
            else:
                new_id_2+=i
                check_double_comma=0
    new_id = new_id_2
    #step4
    try:
        if(new_id[0]=='.'):
            new_id = new_id[1:]
        if(new_id[-1]=='.'):
            new_id = new_id[:-1]
    except:
        pass

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

    #step6
    if(len(new_id)>=16):
        new_id = new_id[:15]
        if(new_id[-1]=='.'):
            new_id = new_id[:-1]

    #step
    if(len(new_id)<=2):
        last_str = new_id[-1]
        while(len(new_id)!=3):
            new_id+=last_str

    answer = new_id
    return answer
반응형