Programmers/Lv1

[프로그래머스] 신규 아이디 추천 (Lv1) / 2021 카카오 블라인드 채용

hellosonic 2023. 6. 16. 16:17

문제요약

나의 코드 및 설명

def solution(new_id):
    answer = ''
    
    #1단계
    new_id = new_id.lower() 
    new_id_list = list(map(str, str(new_id)))
    new_id = ''
    print("1단계:","".join(map(str,new_id_list)))
    
    #2단계
    for i in range(len(new_id_list)):
        if 97<=ord(new_id_list[i])<=122 or 48<=ord(new_id_list[i])<=57 \
        or new_id_list[i] in ["-", "_", "."]:
            new_id += new_id_list[i]
    print("2단계:",new_id)
    
    #3단계
    condot = ''
    for i in range(len(new_id), 1, -1):
        condot = '.' * i
        new_id = "".join(map(str, new_id.replace(condot,".")))
    print("3단계:",new_id)
    
    #4단계
    if new_id[0] == "." and new_id[-1] == ".":
        new_id = new_id[1:len(new_id)-1]
    elif new_id[0] == "." and new_id[-1] != ".":
        new_id = new_id[1:]
    elif new_id[0] != "." and new_id[-1] == ".":
        new_id = new_id[:len(new_id)-1]
    print("4단계:",new_id)
        
    #5단계
    if new_id == "":
        new_id = "a"
    print("5단계:",new_id)
        
    #6단계
    if len(new_id) >= 16:
        new_id = new_id[:15]
        if new_id[-1] == ".":
            new_id = new_id[:14]
    print("6단계:",new_id)
            
    #7단계
    if len(new_id) <= 2:
        x = new_id[-1]
        while True:
            new_id += x
            if len(new_id) == 3:
                break
    
    answer = new_id
    
    return answer

다른 코드 및 설명

  • 나는 주어진 문자열의 문자가 알파벳인지, 숫자인지 판단하기 위해 아스키코드를 활용했다. 하지만 이 분은 isalpha() 함수와, isdigit() 함수를 활용하였다. isalpha() 함수는 문자인지 확인하는 함수, isdigit() 함수는 숫자인지 확인하는 함수이다.
def solution(new_id):
    answer = ''
    # 1
    new_id = new_id.lower()
    # 2
    for c in new_id:
        if c.isalpha() or c.isdigit() or c in ['-', '_', '.']:
            answer += c
    # 3
    while '..' in answer:
        answer = answer.replace('..', '.')
    # 4
    if answer[0] == '.':
        answer = answer[1:] if len(answer) > 1 else '.'
    if answer[-1] == '.':
        answer = answer[:-1]
    # 5
    if answer == '':
        answer = 'a'
    # 6
    if len(answer) > 15:
        answer = answer[:15]
        if answer[-1] == '.':
            answer = answer[:-1]
    # 7
    while len(answer) < 3:
        answer += answer[-1]
    return answer

 

피드백

복잡할 줄 알았지만 생각보다 주어진 문제 조건들만 따라가면 되는 의외로 간단한 문제. 매 단계마다 print를 찍어서 출력값을 봐가면서 문제를 풀면 헷갈리지 않게 풀 수 있다는 것을 몸소 체험할 수 있었다.