알고리즘
[프로그래머스] Level1 - 신규 아이디 추천*
고구마뿌리
2021. 12. 11. 22:17
728x90
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
나의코드
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
이렇게 정규식을 사용할 수 있다는 것을 처음으로 알았다. 다른 포스트를 통해 정규식에 대해 전체적으로 정리해보도록 해야겠다...
이렇게도 문제를 풀 수 있다니... 신기방기....
반응형