https://programmers.co.kr/learn/courses/30/lessons/72410
while
과 replace
활용strip
활용a
추가def solution(new_id):
answer = ''
# level 1
new_id = new_id.lower()
# level 2
for c in new_id:
if c.isalpha() or c.isdigit() or c in '-_.' :
answer += c
# level 3
while '..' in answer :
answer = answer.replace('..','.')
# level 4
answer = answer.strip('.')
# level 5
if not answer :
answer += 'a'
# level 6
if len(answer) > 15 :
answer = answer[:15]
answer = answer.strip('.')
# level 7
if len(answer) < 3 :
while len(answer) < 3 :
answer += answer[-1]
return answer
문제의 단계별 설명이 잘 되어있어서, 단계별로 진행하며 쉽게 해결할 수 있었다. 하지만 다른 사람들의 풀이 중 정규 표현식을 활용하는 코드가 있었는데, 신기하다는 생각이 들었다. 정규 표현식을 사용하는 방법도 숙지하면 좋을 것 같다!
import re
def solution(new_id):
st = new_id
st = st.lower()
st = re.sub('[^a-z0-9\-_.]', '', st)
st = re.sub('\.+', '.', st)
st = re.sub('^[.]|[.]$', '', st)
st = 'a' if len(st) == 0 else st[:15]
st = re.sub('^[.]|[.]$', '', st)
st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
return st