-
[🥰프로그래머스] 신규 아이디 추천 (2021 KAKAO BLIND RECRUITMENT)Algorithm/1일 1코테 2022. 2. 4. 09:28반응형
신규 아이디 추천
https://programmers.co.kr/learn/courses/30/lessons/72410
내 풀이
import re def solution(new_id): new_id = new_id.lower() # 소문자 변경 new_id = re.sub(r'[^a-z0-9-_.]', '', new_id) # 특정 특문, 영어, 숫자외 제거 new_id_list = list(new_id) # 리스트로 변경 for i in range(len(new_id_list)-1): # i와 i+1이 같을 경우 i번째는 공백으로 변경 if new_id_list[i] == '.' and new_id_list[i] == new_id_list[i+1]: new_id_list[i] = '' new_id = ''.join(new_id_list) # 다시 string으로 변경 if new_id.startswith('.'): # . 으로 시작하면 new_id = new_id[1:] # 삭제 if new_id.endswith('.'): # . 으로 끝나면 new_id = new_id[:-1] # 삭제 if len(new_id) == 0: # 길이가 0일 경우 a new_id = 'a' if len(new_id) >= 16: # 16보다 길거나 같으면 new_id = new_id[:15] # 자름 if new_id.endswith('.'): # 잘랐는데 . 으로 끝나면 없애줌 new_id = new_id[:-1] if len(new_id) <= 2: # 2보다 길면 new_id = new_id + (3-len(new_id))*new_id[-1] # 마지막 숫자로 3 채워줌 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
^ -> 문자열의 시작이나 not을 의미한다
$ -> 문자열의 끝을 의미한다.
+ -> 어떤 문자가 1회 이상 반복
{n} -> n회 이상 반복
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[😭 leetcode] 15. 3Sum (0) 2022.07.25 [🥰프로그래머스] 폰켓몬 (찾아라 프로그래밍 마에스터) (0) 2022.02.07 [🥰프로그래머스] 로또의 최고 순위와 최저 순위 (0) 2022.02.03 [🥲 프로그래머스] 신고 결과 받기 (2022 KAKAO BLIND RECRUITMENT) (0) 2022.02.03 [😍 프로그래머스] 튜플 (2019 카카오 개발자 겨울 인턴십) (0) 2021.08.26