Covenant

문제

별이는 헬로월드텔레콤에서 고지서를 보내는 일을 하고 있습니다. 개인정보 보호를 위해 고객들의 전화번호는 맨 뒷자리 4자리를 제외한 나머지를 "*"으로 바꿔야 합니다.

전화번호를 문자열 s로 입력받는 hide_numbers함수를 완성해 별이를 도와주세요

예를들어 s가 "01033334444"면 "*******4444"를 리턴하고, "027778888"인 경우는 "*****8888"을 리턴하면 됩니다.


[풀이]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def hide_numbers(s):
    tmp = []
    tmp2 = []
    for ch in s:
        tmp.append(ch)
 
    if len(tmp) == 11:
        for i in range (7):
            tmp[i] = "*"
    if len(tmp) == 9:
        for i in range (5):
            tmp[i] = "*"
    else:    
        for i in range (6):    
            tmp[i] = "*"        
 
    a = "".join(tmp)
 
    return a
 
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : " + hide_numbers('01033334444'));
cs


 정답을 제출하고 테스트 할때 010-0000-0000 처럼 010 다음에 가운데 숫자가 4자리인 경우도 있었고, 010-000-0000처럼 010 다음에 가운데 숫자가 3자리, 혹은 2자리인 경우도 있었다. 따라서 if 분기점을 사용하여 이 수를 케이스 분류하여 처리하였다.



[다른 풀이]

1
2
3
4
5
def hide_numbers(s):    
    return '*'*len(s[:-4]) + s[-4:] 
 
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : " + hide_numbers('01033334444'));
cs

  문자열 슬라이싱을 이용하여 뒤에서 4번째 자리 전까지를 '*'*len(s[:-4])로 표시하고 이를 *로 이용하여 전화번호를 가리었다. 그 다음 정보 보호할 필요가 없는 끝자리 4자리 숫자를 s[-4:] 를 이용하여 앞의 문자열과 연결하였다.