프로그래머스/Lv. 1
53. 신규 아이디 추천 ★ (isalpha, isdigit)
Seohyeong Lee
2024. 7. 17. 01:59
유형 : 구현
풀이 시간 : 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함수를 사용하였다.