https://programmers.co.kr/learn/courses/30/lessons/72410
(2021 KAKAO BLIND RECRUITMENT)
문제에서 구현하라는대로 구현하면 되는 문제이다.
def solution(new_id):
# 1단계
new_id = new_id.lower()
# 2단계
new_id = ''.join([char for char in new_id if char.isalnum() or char in "-_."])
# 3단계 (cf. PRO 같은숫자는 싫어 문제)
temp_id=""
for char in new_id:
if char=="." and temp_id and temp_id[-1] == ".":
continue
temp_id+=char
new_id = temp_id
# 4단계
if new_id and new_id[0]==".":
new_id = new_id[1:]
if new_id and new_id[-1]==".":
new_id = new_id[:-1]
# 5단계
if not new_id:
new_id = "a"
# 6단계
if len(new_id) >= 16:
new_id = new_id[:15]
if new_id[-1]==".":
new_id = new_id[:-1]
# 7단계
while len(new_id) < 3:
new_id+=new_id[-1]
return new_id
이때 개선 가능한 부분은 3단계를 다음과 같이 하는 것이다. while문을 돌며 '..'을 '.'으로 바꾸는 작업을 반복한다.
while '..' in answer:
answer = answer.replace('..', '.')
다음 3가지 모두 빈문자열에 대해서는 False 반환
- str.isdigit(): 문자열 내의 모든 문자가 숫자이면 True 반환
- str.isalpha(): 문자열 내의 모든 문자가 알파벳이면 True 반환
- str.isalnum(): 문자열 내의 모든 문자가 알파벳과 숫자이면 True 반환