일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 코딩테스트
- 데이터분석
- join
- 조합
- Queue
- programmers
- coding
- 시간복잡도
- lambda
- 연습문제
- Stack
- level4
- CodingTest
- sql
- 완전탐색
- import re
- 파이썬
- collections
- python
- Level2
- lv4
- mysql
- BFS
- itertools
- 프로그래머스
- time complexity
- 코테
- coding test
- 코딩
- counter
- Today
- Total
ror_coding
[Programmers] 신규 아이디 추천 - 72410 본문
728x90
re.findall 과 re.sub를 사용해서 특정 문자만 추출하고, str.strip('.')을 사용해서 앞 뒤 특정 문자만 제거.
Question
신규 유저가 입력한 아이디를 나타내는 new_id가 매개변수로 주어질 때, "네오"가 설계한 7단계의 처리 과정을 거친 후의 추천 아이디를 return 하도록 solution 함수를 완성해 주세요.
Point
- re.findall ( r'[a-z0-9._-]', ~) : 소문자, 숫자, . _ - 만 찾기.
- re.sub ( r'\.+' , '.' , ~ ) : ' . ' 이 1개 이상일 때, '.' 로 바꾸기.
- str.strip ( ' . ' ) : 문자열 가장 앞, 뒤에 .이 있으면 제거.
Code
import re
def solution(new_id):
new_id = ''.join(re.findall(r'[a-z0-9._-]', new_id.lower())) # 1,2단계 : 소문자, 숫자, '.', '_', '-' 만 추출.
new_id = re.sub(r'\.+','.', new_id) # 3단계 : 마침표 2번 이상 연속 -> 1개로.
new_id = new_id.strip('.') # 4단계 : 마침표 처음이나 끝에 있으면 제거.
if not new_id : new_id = "a" # 5단계 : 빈 문자열이라면, "a" 대입.
if len(new_id) >= 16 : new_id = new_id[:15].strip('.') # 6단계 : 길이 >= 16, 제거 후 끝에 마침표 있다면 제거.
if len(new_id) <= 2 : # 7단계 : 길이 <= 2, 길이 3 될 때까지 마지막 문자 붙임.
new_id += new_id[-1]*(3-len(new_id))
return new_id
now me
On my github
728x90
'Algorithm > Python' 카테고리의 다른 글
[Programmers] 개인정보 수집 유효기간 - 150370 (1) | 2024.10.26 |
---|---|
[Programmers] 바탕화면 정리 - 161990 (0) | 2024.10.26 |
[Programmers] [PCCE 기출문제] 10번 / 데이터 분석 - 250121 (1) | 2024.10.25 |
[Python] Counter (collections) (0) | 2024.10.24 |
[Programmers] [카카오 인턴] 키패드 누르기 - 67256 (1) | 2024.10.24 |