https://programmers.co.kr/learn/courses/30/lessons/72410
내 풀이
from string import punctuation
def solution(new_id):
new_id=new_id.lower()
symbols=punctuation.replace('-','').replace('_','').replace('.','')
for symbol in symbols:
new_id = new_id.replace(symbol,'')
while '..' in new_id:
new_id = new_id.replace('..','.')
if new_id.startswith('.') or new_id.endswith('.'):
new_id=new_id.strip('.')
if not new_id:
new_id='a'
if len(new_id) >=16:
new_id=new_id[:15]
if new_id[-1]=='.':
new_id=new_id[:-1]
while len(new_id)<3:
new_id += new_id[(len(new_id)-1)]
return new_id
다른사람의 풀이
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
정규식 연습하기 제일 좋은 문제라고 생각했는데 자꾸 테스트케이스 하나가 오류가 나서 포기하고 저렇게 풀었다.
두번째는 정규식으로 푼 모범답안
정규식을 알면 굉장히 쉽고 이쁘게 풀린다는걸 알 수 있다.
punctuation 라는 모듈은 특수모음 모음집이다.
punctuation안에 -,_ 를 공백으로 대체해서 걔내 들은 빼고 검사한 거다. 나름 이쁘게 풀었다고 생각했는데 역시 정규식이 짱이였다.
'취준 > 프로그래머스' 카테고리의 다른 글
인형뽑기 - 파이썬 (0) | 2022.05.19 |
---|---|
키패드 - 파이썬 (0) | 2022.05.13 |
로또의 최고 순위와 최저 순위 - 파이썬 (0) | 2022.05.12 |
신고 결과받기 - 프로그래머스 (0) | 2022.05.10 |
숫자 문자열과 영단어 - 프로그래머스 (0) | 2022.05.09 |