프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
phone_number | return |
---|---|
"01033334444" | "*******4444" |
def solution(phone_number):
for i, v in enumerate(phone_number):
if i == len(phone_number) - 4:
return phone_number
phone_number = phone_number.replace(v, '*', 1)
'*'
로 바꿔준다. replace를 사용하면 몇개를 바꿀지 명시 안 할 경우 동일한 문자열을 모두 바꿔버린다. 그러므로 1개씩 바꾼다고 명시해준다.def hide_numbers(s):
return "*"*(len(s)-4) + s[-4:]
감탄했습니다. 일일히 바꿔주는게 아니라 *을 필요한 길이(len-4)만큼 곱셈으로 생성해주고 [-4:]이라는 슬라이싱을 활용해 역순에서 4번째 숫자까지 잘라서 그대로 문자열 덧셈을 해줘버리는 깔끔 명쾌한 로직입니다.
보통 마이너스 인덱스는 [::-1] => 문자열/리스트 역순 뒤집기
[-1:] => 마지막 문자열, 리스트요소만 슬라이싱만 썼는데 [-4:]를 써서 뒤에서부터 네 글자를 슬라이싱하는걸 처음 봤습니다. 앞으로 슬라이싱 좀 더 연구해봐야겠네요~ 🥰