728x90
나의코드
import re
def solution(new_id):
answer = ''
new_id=new_id.lower()
chars = "~!@#$%^&*()=+[{]}:?,<>/"
for c in range(len(chars)):
new_id=new_id.replace(chars[c],"")
new_id=re.sub('[.]+', '.', new_id)
new_id=new_id.strip('.')
if len(new_id)==0:
new_id='a'
if len(new_id)>=16:
new_id = new_id[:15]
new_id = new_id.rstrip('.')
if len(new_id)<=2:
last=new_id[-1]
while len(new_id)<=2:
new_id += last
return new_id
string과 관련된 함수를 모른다면 전혀 풀 수 없는 문제이다. 다른 말로 하면 알면 무조건 풀 수 있는 문제이다. 그래서 레벨1인것 같다. 이 문제를 통해 string과 관련된 함수를 정리할 수 있었다. 또한 처음으로 정규식이라는 것을 접하게 되었다. 아래 정답 코드는 정규식을 통해 해결하였다.
정답코드
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
이렇게 정규식을 사용할 수 있다는 것을 처음으로 알았다. 다른 포스트를 통해 정규식에 대해 전체적으로 정리해보도록 해야겠다...
이렇게도 문제를 풀 수 있다니... 신기방기....
반응형
'알고리즘' 카테고리의 다른 글
[파이썬 알고리즘 인터뷰] 유효한 팰린드롬 (0) | 2022.02.14 |
---|---|
[프로그래머스] level1 - 숫자 문자열과 영단어 (0) | 2021.12.11 |
[이것이 코딩테스트다] 실전 - 만들 수 없는 금액* (0) | 2021.12.11 |
[이것이 코딩테스트다] 실전 - 문자열 뒤집기 (0) | 2021.12.11 |
[이것이 코딩테스트다] 실전 - 곱하기 혹은 더하기* (0) | 2021.12.11 |