def solution(new_id):
answer = ''
new_id = new_id.lower()
lower_alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
is_num = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
for i in range(len(new_id)):
if new_id[i] in lower_alpha or new_id[i] in is_num or new_id[i]== '-' or new_id[i]=='.' or new_id[i] == '_':
answer += new_id[i]
for i in range(len(answer)+1, 0, -1 ):
answer = answer.replace('.'*i, '.')
if len(answer) != 0:
id_lst = list(answer)
if id_lst[0] == '.':
id_lst[0] = ''
if id_lst[-1] == '.':
id_lst[-1] = ''
answer = ''.join(id_lst)
if len(answer) == 0:
answer += 'a'
if len(answer) >= 16:
answer = answer[0:15]
if answer[-1] == '.':
answer = answer[0:len(answer)-1]
if len(answer) <= 2:
print(answer, '22123123')
while len(answer) < 3:
answer += answer[-1]
return answer
정규표현식을 몰라 각 조건별로 하나하나 풀었다. Testcase 3, 4, 5, 11, 15 오류가 떴었는데 맨 처음의 . 과 맨 끝의 . 을 지우는 코드에서 if를 elif로 적어 틀렸었는데 질문하기에서 찾은 해결방법을 참고하여 해결
'Programmers' 카테고리의 다른 글
[프로그래머스 / 파이썬 풀이] 실패율 (0) | 2023.01.27 |
---|---|
[프로그래머스 / 파이썬 풀이] [1차] 비밀지도 (0) | 2023.01.27 |
[프로그래머스 / 파이썬 풀이] 로또의 최고 순위와 최저 순위 (0) | 2023.01.25 |
[프로그래머스 / 파이썬 풀이] 개인정보 수집 유효기간 (0) | 2023.01.25 |
[프로그래머스 / 파이썬 풀이] 숫자 문자열과 영단어 (0) | 2023.01.20 |