유형 : 구현

풀이 시간 : 20분

 

문제 자체는 쉬운데 완전 노가다 구현...

def solution(new_id):
    #1단계
    answer = new_id.lower()
    letter = 'abcdefghijklmnopqrstuvwxyz'
    number = '0123456789'
    char = '-_.'
    i = 0
    #2단계 
    while True:
        if i >= len(answer):
            break
        if answer[i] not in letter and answer[i] not in number and answer[i] not in char:
            answer = answer[:i] + answer[i+1:]
            i -= 1
        i += 1
    #3단계
    while '..' in answer:
        answer = answer.replace('..', '.')
    #4단걔
    if answer and answer[0] == '.':
        answer = answer[1:]
    if answer and answer[len(answer)-1] == '.':
        answer = answer[:len(answer)-1]
    #5단계
    if not answer:
        answer = "a"
    #6단계
    if len(answer) >= 16:
        answer = answer[:15]
        if answer[14] == '.':
            answer = answer[:14]
    #7단계
    if len(answer) <= 2:
        while True:
            if len(answer) == 3:
                break
            answer = answer + answer[len(answer)-1]
    return answer

 

2단계, 3단계에서 최적화를 해 보았다. 

def solution(new_id):
    #1단계
    answer = new_id.lower()
    char = '-_.'
    i = 0
    #2단계 
    while True:
        if i >= len(answer):
            break
        if not answer[i].isalpha() and not answer[i].isdigit() and answer[i] not in char:
            answer = answer[:i] + answer[i+1:]
            i -= 1
        i += 1
    #3단계
    while '..' in answer:
        answer = answer.replace('..', '.')
    #4단걔
    if answer and answer[0] == '.':
        answer = answer[1:]
    if answer and answer[len(answer)-1] == '.':
        answer = answer[:len(answer)-1]
    #5단계
    if not answer:
        answer = "a"
    #6단계
    if len(answer) >= 16:
        answer = answer[:15]
        if answer[14] == '.':
            answer = answer[:14]
    #7단계
    if len(answer) <= 2:
        while True:
            if len(answer) == 3:
                break
            answer = answer + answer[len(answer)-1]
    return answer

 

isdigit, isalpha를 통해서 알파벳과 digit여부를 확인할 수 있다.

3단계에서는 while문과 replace함수를 사용하였다. 

'프로그래머스 > Lv. 1' 카테고리의 다른 글

55. 개인정보 수집 유효기간 ★  (0) 2024.07.17
54. 성격 유형 검사하기  (0) 2024.07.17
52. 키패드 누르기  (0) 2024.07.17
51. 크레인 인형뽑기 게임  (0) 2024.07.16
50. 햄버거 만들기 ★  (0) 2024.07.16
복사했습니다!