kjp0411 님의 블로그
프로그래머스 문제 : 신규 아이디 추천 본문
프로그래머스 문제 : 신규 아이디 추천
https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명

문제 풀이

💡 실수 포인트: 신규 아이디 추천
- 정규식 실수
- '[^a-z0-9\-_,]'로 작성 → ,를 포함시키고 .을 제거하는 실수
- ✅ 올바른 패턴: '[^a-z0-9\-_.]'
- 빈 문자열 처리 오류
- re.sub('', 'a', new_id) 사용 → 전혀 의도한 동작이 아님
- ✅ 조건문으로 처리해야 함:
if new_id == '': new_id = 'a'
- 마침표 연속 제거 정규식
- 초기에 [..] 사용 → '['와 ']' 안에서 .만 포함하면 그냥 '.' 하나만 제거되는 결과
- ✅ 올바른 패턴: '\.{2,}' (마침표 2개 이상)
📝 회고 및 정리
- 정규표현식의 의미와 기호를 정확히 알고 써야 한다
- .은 정규식에서 "임의의 문자"이므로 반드시 \.으로 이스케이프
- [^...]는 허용하지 않을 문자 목록, 안에 들어가는 기호가 정확해야 함
- 불필요한 re.sub 사용 지양
- re.sub('', 'a', new_id) 같은 표현은 피하고, 간단한 조건은 일반 if문으로
- 문자열 처리에서 strip, rstrip, while 등을 목적에 맞게 정확히 사용
- 처음과 끝의 문자 제거는 strip, 끝 문자 제거는 rstrip
- 앞으로는 문자열 문제에서도 다음을 반드시 검토:
- 정규식 vs 문자열 메서드 선택 기준
- 기호 (^, ., *, {} 등)의 정확한 의미 파악
- 예외 케이스 (빈 문자열, 연속 문자 등)를 테스트하면서 디버깅
'Coding Test > Python' 카테고리의 다른 글
| 미리 보는 코딩 테스트 오답 노트 (0) | 2025.09.09 |
|---|---|
| 코딩 테스트 준비하기 (1) | 2025.09.08 |
| sorted() vs sort() 차이 정리 – 언제 어떤 걸 써야 할까? (1) | 2025.06.23 |
| Python 내장 함수 정리 – 코테에 자주 쓰이는 것만 골라보자! (0) | 2025.06.23 |
| 리스트 컴프리헨션(List Comprehension) (0) | 2025.06.22 |
