kjp0411 님의 블로그

프로그래머스 문제 : 신규 아이디 추천 본문

Coding Test/Python

프로그래머스 문제 : 신규 아이디 추천

kjp0411 2025. 6. 30. 16:11

프로그래머스 문제 : 신규 아이디 추천

https://school.programmers.co.kr/learn/courses/30/lessons/72410

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제 설명

 

문제 풀이

💡 실수 포인트: 신규 아이디 추천

  1. 정규식 실수
    • '[^a-z0-9\-_,]'로 작성 → ,를 포함시키고 .을 제거하는 실수
    • ✅ 올바른 패턴: '[^a-z0-9\-_.]'
  2. 빈 문자열 처리 오류
    • re.sub('', 'a', new_id) 사용 → 전혀 의도한 동작이 아님
    • ✅ 조건문으로 처리해야 함:
      if new_id == '': new_id = 'a'
  3. 마침표 연속 제거 정규식
    • 초기에 [..] 사용 → '['와 ']' 안에서 .만 포함하면 그냥 '.' 하나만 제거되는 결과
    • ✅ 올바른 패턴: '\.{2,}' (마침표 2개 이상)

📝 회고 및 정리

  • 정규표현식의 의미와 기호를 정확히 알고 써야 한다
    • .은 정규식에서 "임의의 문자"이므로 반드시 \.으로 이스케이프
    • [^...]는 허용하지 않을 문자 목록, 안에 들어가는 기호가 정확해야 함
  • 불필요한 re.sub 사용 지양
    • re.sub('', 'a', new_id) 같은 표현은 피하고, 간단한 조건은 일반 if문으로
  • 문자열 처리에서 strip, rstrip, while 등을 목적에 맞게 정확히 사용
    • 처음과 끝의 문자 제거는 strip, 끝 문자 제거는 rstrip
  • 앞으로는 문자열 문제에서도 다음을 반드시 검토:
    • 정규식 vs 문자열 메서드 선택 기준
    • 기호 (^, ., *, {} 등)의 정확한 의미 파악
    • 예외 케이스 (빈 문자열, 연속 문자 등)를 테스트하면서 디버깅