반응형
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
s는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"
import re
def solution(phone_number):
return re.sub(r'\d(?=\d{4})', '*', phone_number) # re.sub으로 기존 문자열을 원하는 패턴으로 변환
해당 문제는 딱 보면 slicing으로 풀어도 되는 문제다. 하지만 코드 상으로 더 간결하게 푸는 방법은 정규표현식을 사용하는 것이다. 문제에서 뒤의 4자리만 "*" 으로 변환하면 된다고 했기 때문에 정규표현식에서도 뒤의 4자리 숫자만 찾으면 된다.
위의 정규표현식을 설명하면 다음과 같다.
\d -> 숫자 [0-9]를 가리킨다.
(?=) -> 뒤에 나오는 문자열이 조건에 해당하는지 여부를 판단한다.
\d{4} -> 숫자 네 자리를 가리킨다.
결론적으로 처음에 숫자 1개가 등장하고, 그 뒤에 숫자 4개가 연속해서 오는지 확인하는 것이다. 아래는 정규표현식을 연습할 수 있는 사이트에서 확인한 결과다. 마지막 네 자리가 포함되지 않은 이유는 뒤에 4개의 숫자가 등장하지 않기 때문이다. 다시 말해 위의 정규표현식은 총 5개의 숫자가 연속해서 등장하는지를 살펴본다고 할 수 있다.
728x90
반응형
'문돌이 존버 > 프로그래밍 스터디' 카테고리의 다른 글
(프로그래머스 카카오 블라인드 문제 풀이) 신규 아이디 추천 (0) | 2021.06.19 |
---|---|
(프로그래머스 탐욕법 문제 풀이) 체육복 (0) | 2021.06.18 |
(프로그래머스 연습 문제 풀이) 최대공약수와 최소공배수 (0) | 2021.06.17 |
힙(Heap) 자료구조 알아보기 (0) | 2021.06.04 |
(프로그래머스 연습 문제 풀이) 뉴스 클러스터링 (0) | 2021.06.04 |