import re
def solution(new_id):
new_id = new_id.lower()
new_id = re.sub('[^\w\.\-\_]','' ,new_id) #
new_id = re.sub('\.+','.' ,new_id) # new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환
new_id = re.sub('^\.|\.$','' ,new_id) # new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거
if new_id == '': # 빈 문자열이라면, new_id에 "a"를 대입
new_id += "a"
if len(new_id) > 15: # 15자로 슬라이싱 및 마침표 제거
new_id = new_id[:15]
new_id = re.sub('\.$','',new_id)
while len(new_id) < 3: # 마지막 글자 이어붙이기
new_id += 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
'Python 문제풀이 > 프로그래머스&해커랭크' 카테고리의 다른 글
없는 숫자 더하기 (0) | 2021.11.17 |
---|---|
숫자 문자열과 영단어 (0) | 2021.11.17 |
로또의 최고 순위와 최저 순위 (0) | 2021.11.17 |
두 개 뽑아서 더하기 (0) | 2021.01.06 |
2016년 (0) | 2021.01.06 |