[til] 프로그래머스 신규아이디 추천

2 min read

🧑💻 오늘의 문제: 프로그래머스 Lv.1 ― 신규 아이디 추천
📌 문제 요약
주어진 문자열 new_id
를 아래 7단계 규칙에 따라 수정해, 서비스 규격에 맞는 새 ID를 반환한다.
소문자로 통일
허용 문자 (소문자, 숫자,
- _ .
) 외 제거마침표가 연속되면 하나로 합치기
처음 / 끝에 위치한 마침표 제거
빈 문자열이면
"a"
대입길이 16 이상 → 처음 15글자만 남기고, 끝이
.
면 삭제길이 2 이하 → 마지막 문자를 길이 3이 될 때까지 반복
🖥️ 파이썬 풀이 (정규식 활용)
import re
def solution(new_id):
# 1. 소문자
new_id = new_id.lower()
# 2. 허용 문자 제외 제거
new_id = re.sub('[^a-z0-9\-_.]', '', new_id)
# 3. 연속 '.' -> 하나
new_id = re.sub('\.+', '.', new_id)
# 4. 양끝 '.' 제거
new_id = new_id.strip('.')
# 5. 빈 문자열 -> 'a'
if not new_id:
new_id = 'a'
# 6. 길이 16 이상 처리
new_id = new_id[:15].rstrip('.')
# 7. 길이 2 이하 처리
while len(new_id) < 3:
new_id += new_id[-1]
return new_id
단계 | 핵심 메서드 |
1 | str.lower() |
2 | re.sub('[^a-z0-9\-_.]', '', s) |
3 | re.sub('\.+', '.', s) |
4 | str.strip('.') , rstrip('.') |
6 | 슬라이싱 [:15] + rstrip('.') |
7 | while 반복 |
💡 느낀 점 & 배운 것
정규식으로 “허용 집합 제외”(
[^...]
)와 “연속 문자 압축”(\.+
)을 간결히 처리할 수 있다.단계별 요구사항이 명확 → 파이프라인 방식(순서대로 변환)이 실수 방지에 효과적.
문자열 끝에 조건이 걸려 있으면
strip
·rstrip
을 적절히 선택하기.길이 조건(짧음/김) 처리 시 슬라이싱 + 반복문이 깔끔하다.
0
Subscribe to my newsletter
Read articles from 유승완 directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
