코테연습문제

[Programmers/Python] 신규 아이디 추천

SI-AH 2023. 6. 15. 18:36

프로그래머스 < 신규 아이디 추천 >

 

 

Lv1.인만큼 어렵지 않은 문제였고,

문제에 주어진 단계를 그대로 구현하면 되는 문제였다.

 

def solution(new_id):
    answer = ''
    
    # 1단계
    new_id = new_id.lower()
    
    # 2단계
    for id in new_id:
        if id.isalpha() or id.isdigit() or id in '-_.':
            answer += id
            
    # 3단계
    while '..' in answer:
        answer = answer.replace('..', '.')
    
    # 4단계
    if answer[0] == '.' and len(answer)>1:
        answer = answer[1:]
    if answer[-1] == '.':
        answer = answer[:-1]
        
    # 5단계
    if len(answer) == 0:
        answer = 'a'
    
    # 6단계
    if len(answer) >= 16:
        answer = answer[:15]
        if answer[-1] == '.':
            answer = answer[:-1]
            
    # 7단계
    if len(answer) <= 2:
        while len(answer) < 3:
            answer += answer[-1]
    
    
    return answer

 

풀이과정

..이라고 할만한 게 없다. 하라는대로 그대로 구현했다

한 가지 유의할 점

4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.

 

코드에는 문제에서 주어지지 않은 조건을 썼다.

len(answer) > 1 이라는 조건을 추가해준 이유는 '처음'이라는 것을 표현하기 위함이다.

적어도 2개의 요소가 있어야 처음/끝이라는 개념을 적용시킬 수 있다.

또한 answer[1:]을 할 때 out of index 오류가 날 것이다.