코딩테스트

[파이썬] 신규 아이디 추천 - 2021 KAKAO BLIND RECRUITMENT [CODING TEST #10]

ALTERww 2022. 7. 20. 22:56
320x100

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

 

 

단계별로 구현하면 어렵지 않은 문제.

  • #1 : new_id = new_id.lower()        (copy를 반환)
  • #2 : isalnum() 으로 숫자 & 알파벳 check
  • #3 : while, replace() 활용
  • #4 : 앞뒤 '.' 제거할 때, len < 2일 경우 answer[1]에 대한 접근이 불가능하므로 길이 조건 추가.

 

def solution(new_id):
    answer = ''
    #1
    new_id = new_id.lower()
    #2
    for alpha in new_id:
        if alpha.isalnum() or alpha in '-_.':
            answer += alpha
    #3
    while '..' in answer:
        answer = answer.replace('..','.')
    #4
    if answer[0] == '.':
        answer = answer[1:]
    if len(answer) > 1 and answer[-1] == '.':
        answer = answer[:-1]
    #5
    if len(answer) == 0:
        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

 

isalnum() 함수같은 내장 함수 알아두면 편할 것 같다.

  • isdigit() : 숫자만 있으면 True
  • isalpha() : 알파벳 문자만 있으면 True
  • isupper() : 알파벳이 모두 대문자면 True
  • islower() : 알파벳이 모두 소문자면 True