나의 풀이
def solution(new_id):
alphabet = [chr(i) for i in range(ord('a'), ord('z') + 1)]
numbers = [str(i) for i in range(10)]
validation = alphabet + numbers + ['-', '_', '.']
# level 1, 2
for i, j in enumerate(new_id):
if j.isupper():
new_id = new_id.replace(j, j.lower())
if j not in validation:
new_id = new_id.replace(j, '')
print("level 1, 2", new_id)
# level 3
new_id = [i for i in new_id]
for i in range(len(new_id) - 1):
if new_id[i] == '.':
if new_id[i + 1] == '.':
new_id[i] = ''
print("level 3 ", "".join(map(str, new_id)))
# level 4
new_id = "".join(map(str, new_id))
new_id = [i for i in new_id]
while True:
if new_id[0] == '.':
new_id[0] = ''
continue
if new_id[-1] == '.':
new_id[-1] = ''
continue
break
new_id = "".join(map(str, new_id))
print("level 4 ", new_id)
# level 5
if not any(new_id):
new_id = 'a'
print("level 5 ", new_id)
# level 6
new_id = [i for i in new_id]
if len(new_id) >= 16:
new_id = new_id[:15]
while True:
if new_id[-1] == '.':
new_id[-1] = ''
continue
break
new_id = "".join(map(str, new_id))
print("level 6 ", new_id)
# level 7
if len(new_id) <= 2:
new_id = new_id + new_id[-1] * (3 - len(new_id))
print("level 7", new_id)
return new_id
배울만한 코드
def solution(new_id):
answer = ""
# level 1
new_id = new_id.lower()
# level 2
for i in new_id:
if i.isalpha() or i.isdigit() or i in ['-', '_', '.']:
answer += i
# level 3
while '..' in answer:
answer = answer.replace('..', '.')
# level 4
if answer[0] == '.':
answer = answer[1:] if len(answer) > 1 else '.'
if answer[-1] == '.':
answer = answer[:-1]
# level 5
if answer == "":
answer = 'a'
# level 6
if len(answer) > 15:
answer = answer[:15]
if answer[-1] == '.':
answer = answer[:-1]
# level 7
while len(answer) < 3:
answer += answer[-1]
return answer
정말 모든면에서 나보다 완벽한 코드라 보면서 머리가 멍한 기분이 들었다.
isalpha(), isdigit(), while '..' in answer:, .... 많은 성장을 할 수 있는 답안이었다.
'코딩 테스트 (Coding Test)' 카테고리의 다른 글
[프로그래머스] JadenCase 문자열 만들기 (0) | 2023.01.16 |
---|---|
[프로그래머스] 키패드 누르기 (0) | 2023.01.13 |
[프로그래머스] 2018 카카오 [1차] 다트 게임 (0) | 2023.01.11 |
[프로그래머스] 2019 카카오 "실패율" (0) | 2023.01.11 |
[프로그래머스] 2018 카카오 [1차] 비밀지도 (2) | 2023.01.11 |