https://school.programmers.co.kr/learn/courses/30/lessons/72410
코드
import re
def solution(new_id):
new_id = re.sub(r'[^a-z0-9_.-]', '', new_id.lower())
new_id = re.sub(r'\.{2,}', '.', new_id).strip('.')
new_id = "aaa" if not new_id else new_id[:15].rstrip('.')
return new_id.ljust(3, new_id[-1])
정규표현식을 많이 사용하는 문제였습니다.
1. 소문자로 변환
str.lower() 사용
대문자의 경우 str.upper() 사용
2. 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자 제거하기
new_id = re.sub(r'[^a-z0-9_.-]', '', new_id)
- [^...]: 괄호 안의 문자 제외.
- a-z: 알파벳 소문자.
- 0-9: 숫자.
- _.-: 밑줄, 마침표, 빼기.
3. 두 개 이상 연속된 마침표를 하나의 마침표(.)로 변경.
new_id = re.sub(r'\.{2,}', '.', new_id)
- \.: 마침표 자체를 의미.
- {2,}: 2번 이상 반복되는 패턴.
4. 마침표(.)가 처음이나 끝에 위치하면 제거
str.strip() 사용
str.strip()은
문자열의 양쪽 끝에 있는 특정 문자들을 제거하는 함수입니다.
기본적으로 공백 문자(띄어쓰기, 개행 문자 등)를 제거하지만, 인자를 지정하면 해당 문자를 제거할 수 있습니다
5, 6. 빈 문자열 처리 + 길이가 16자 이상일 경우 처리
new_id = 'a' if not new_id else new_id[:15].rstrip('.')
비어있으면 'a'로 아니면 어차피 길이는 15까지니까 자르고
마지막에 '.'가 오는지 확인해줍니다.
7. 마지막 문자를 길이가 3이 될 때까지 마지막 문자 추가
str.ljust() 사용
str.ljust(width, fillchar)는
문자열의 왼쪽을 기준으로 정렬하고,
지정한 너비(width)에 맞게 오른쪽에 채움 문자(fillchar)를 추가합니다.
기본 채움 문자는 공백(' ')입니다.
너비가 현재 문자열 길이보다 작거나 같으면 원본 문자열 그대로 반환됩니다.
728x90
'프로그래머스 > Lv.1' 카테고리의 다른 글
2024 KAKAO WINTER INTERNSHIP > 가장 많이 받은 선물 - Python, 구현 (1) | 2024.12.08 |
---|---|
PCCP 기출문제 > 붕대 감기 - Pyton, 구현 (0) | 2024.12.08 |
PCCE 기출문제 > 데이터 분석 - Pyton, sorted, lambda (1) | 2024.12.07 |
2018 KAKAO BLIND RECRUITMENT > 다트 게임 - Pyton, re, compile, findall, 정규식 (2) | 2024.12.06 |
2018 KAKAO BLIND RECRUITMENT > 비밀지도 - Pyton, n진법, bin, zfill (0) | 2024.12.05 |