[Python] 프로그래머스 - 신규 아이디 추천
728x90
반응형
programmers.co.kr/learn/courses/30/lessons/72410
2021 카카오 블라인드 코딩테스트 기출문제이다.
'정규표현식(Regular Expression)' 에 대해 묻는 문제이다.
예전에 웹해킹 공부를 잠깐 할 때, 대충 공부해서 잘 생각이 나지 않아 노가다로 일단 풀었다.
import re
def solution(new_id):
# 1단계
answer = new_id.lower()
# 2단계
answer = re.sub('[^a-z0-9_.-]', '', answer)
# 3단계
while '..' in answer:
answer = answer.replace('..', '.')
# 4단계
if answer and answer[0] == '.':
answer = answer.replace('.', '', 1)
if answer and answer[-1] == '.':
answer = answer[:-1]
# 5단계
if len(answer) == 0:
answer = 'a'
# 6단계
if len(answer) >= 16:
answer = answer[:15]
if answer[-1] == '.':
answer = answer[:-1]
# 7단계
if len(answer) <= 2:
while len(answer) <= 2:
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
# 카카오기출문제를 보면 정규표현식을 사용해서 풀 수 있는 문제들이 꽤 많이 나온다.
물론 안써도 풀리긴 하지만, 코드도 깔끔해지고 빠르게 풀 수 있으니 공부를 해야겠다.
728x90
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Python] 프로그래머스 - 삼각 달팽이 (2) | 2021.04.25 |
---|---|
[Python] 프로그래머스 - 이진 변환 반복하기 (0) | 2021.04.25 |
[Python] 프로그래머스 - 소수 만들기 (0) | 2021.04.13 |
[Python] 프로그래머스 - 뉴스 클러스터링 (0) | 2021.04.10 |
[Python] 프로그래머스 - 정수 삼각형 (0) | 2021.04.08 |
TAGS.