-
programmers.co.kr/learn/courses/30/lessons/72410
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
단계별로 나오는 설명대로 그대로 구현하면 되는 문제다.
정규표현식과 3단계 같은 경우 다른사람의 코드를 참고해 풀었다.
처음에는 3단계 부분도 정규표현식을 이용해 이렇게 작성했다.
regex = re.compile('[.]{2,}') find = regex.findall(new_id) if find: # 3단계 for i in find: new_id = new_id.replace(i,'.').이 2개이상 나오는 것들을 찾아서 new_id에서 .으로 대체하도록 했는데 테스트케이스 20, 21이 통과가 되지 않았다..
while '..' in new_id: # 3단계 new_id = new_id.replace('..', '.')while을 사용해 ..들을 모두 .으로 바꿔주니 해결되었다.
그리고 replace 함수 대신 re의 sub함수를 사용해도 된다.
re.sub('패턴', '바꿀문자열', '문자열', 바꿀횟수)
정답코드
import re def solution(new_id): new_id = new_id.lower() # 1단계 regex = re.compile('[^a-z0-9-_.]') find = regex.findall(new_id) if find: # 2단계 for i in find: new_id = new_id.replace(i, '') while '..' in new_id: # 3단계 new_id = new_id.replace('..', '.') new_id = new_id.strip('.') # 4단계 if not new_id: # 5단계 new_id = new_id + 'a' if len(new_id) >= 16: # 6단계 new_id = new_id[:15] new_id = new_id.strip('.') if len(new_id) <= 2: # 7단계 new_id = new_id + new_id[-1] * (3 - len(new_id)) return new_id'알고리즘' 카테고리의 다른 글
[백준] 11279 최대 힙 (0) 2021.08.12 [프로그래머스] 주식가격 (0) 2021.05.17 [프로그래머스] 다리를 지나는 트럭 (0) 2021.05.09 [백준] 1182 부분수열의 합 (1) 2021.05.06 댓글
