문제
별이는 헬로월드텔레콤에서 고지서를 보내는 일을 하고 있습니다. 개인정보 보호를 위해 고객들의 전화번호는 맨 뒷자리 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:] 를 이용하여 앞의 문자열과 연결하였다.
'Computer Science > Problem Solving' 카테고리의 다른 글
[tryhellowrld]level1 행렬의 곱셈 by파이썬 (0) | 2017.07.31 |
---|---|
[tryhelloworld]level1 행렬의 덧셈 by 파이썬 (0) | 2017.07.31 |
[tryhelloworld]x만큼 간격이 있는 n개의 숫자 (0) | 2017.07.30 |
[tryhelloworld]정수제곱근판별하기 by 파이썬 (0) | 2017.07.30 |
[tryhelloworld]level1 문자열 내 p와 y의 개수 by파이썬 (0) | 2017.07.29 |