본문 바로가기

파이썬 프로그래밍/파이썬 심화

[Python] (초급) 파이썬 핸드폰번호 가리기 예제

본 게시글은 http://tryhelloworld.co.kr/ 에 있는 문제를 바탕으로 풀이한 것입니다.



문제.

별이는 헬로월드텔레콤에서 고지서를 보내는 일을 하고 있습니다. 개인정보 보호를 위해 고객들의 전화번호는 맨 뒷자리 4자리를 제외한 나머지를 "*"으로 바꿔야 합니다.
전화번호를 문자열 s로 입력받는 hide_numbers함수를 완성해 별이를 도와주세요
예를들어 s가 "01033334444"면 "*******4444"를 리턴하고, "027778888"인 경우는 "*****8888"을 리턴하면 됩니다.


1
2
3
4
5
def hide_numbers(s):
    #함수를 완성해 별이를 도와주세요
 
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : " + hide_numbers('01033334444'));
cs




정답 및 풀이.

제가 알고리즘을 푸는 방법으로 풀이하겠습니다.

세분화

1. 전화번호를 문자열 s로 입력받는다.

print(hide_numbers('01033333333')이 되겠죠

2. 뒷자리를 제외한 나머지를 * 으로 바꾼다. ->이녀석을 return에 넣어야 할것 같네요

2-1. 뒷자리를 계산하기 위하여 문자열의 길이를 구한다. -> len(s)

2-2. 문자열에서 맨끝 4자리를 제외한 문자열을 먼저 *로 바꾼다. '*' * (len(s)-4)

2-3. 나머지 4개의 문자를 출력한다. s[-4:]



1
2
3
4
5
def hide_numbers(s):
    #함수를 완성해 별이를 도와주세요
    return '*' * (len(s)-4+ s[-4:]
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : " + hide_numbers('01033334444'));
cs
세분화 한것을 합쳐보면 이렇게 되겠죠.


결과: #######4444





결과값 *******4444을 010########로 출력이 나오도록 해보기

1
2
3
4
5
def hide_numbers(s):
    #함수를 완성해 별이를 도와주세요
    return s[:3+ '#' * (len(s[3:]))
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : " + hide_numbers('01033334444'));
cs

결과 : 010########