유형 : 구현
풀이 시간 : 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 |