알고리즘 연습 [핸드폰 번호 가리기]
핸드폰 번호 가리기
문제
별이는 헬로월드텔레콤에서 고지서를 보내는 일을 하고 있습니다. 개인정보 보호를 위해 고객들의 전화번호는 맨 뒷자리 4자리를 제외한 나머지를 "*"으로 바꿔야 합니다.
전화번호를 문자열 s로 입력받는 hide_numbers함수를 완성해 별이를 도와주세요
예를들어 s가 "01033334444"면 "*******4444"를 리턴하고, "027778888"인 경우는 "*****8888"을 리턴하면 됩니다.
나의 풀이
def hide_numbers(s):
return s.replace(s[:-4], '*'*len(s[:-4]))
뒤의 네부분을 제외하고 나머지 길이만큼 ‘*‘로 바꿈
다른 풀이
def hide_numbers(s):
return '*'*len(s[:-4]) + s[-4:]
다른 풀이2
import re
def hide_numbers(s):
p = re.compile(r'\d(?=\d{4})')
return p.sub("*", s, count = 0)
- 정규식 쓴 풀이
- sub: string에서 패턴에 일치하는 부분을 repl로 교체하여 결과 문자열을 반환