-
[Python] 프로그래머스 : 핸드폰 번호 가리기코딩테스트/프로그래머스 2024. 7. 16. 22:25
[문제 풀기 전 생각한 부분]
1. 요구사항에는 없지만, 010-1234-5678 처럼 하이픈(-)이 들어간다면 어떻게 해야될까?
2. 01012345678의 길이는 11 027778888의 길이는 9 총 두 가지 경우에 대해서 if 문으로 해보자.
[my_code]
1. 하이픈(-)이 들어간다면 replace 파이썬의 내장함수를 사용해서 제거를 해주자.
phone_number = "02-777-8888" phone_number = phone_number.replace('-', '') # 027778888
phone_number = "02-777-8888" phone_number = phone_number.replace('-', '') if len(phone_number) == 11: print('*'*7 + phone_number[7:]) else: print('*'*5 + phone_number[5:])
[문제점]- 뭐가 문제일까 생각해보다 ' 02 ' 는 서울이고 그 외 지역은 031 처럼 3자리인 경우도 있으니 elif 로 추가.
- 테스트 케이스 8번 하나를 제외 하고 여전히 그대로다.
- 1111-1111 8자리도 존재한다.
- 이쯤 되니 예외를 생각하기 보단 뒷 4자리를 제외하고 앞자리 번호를 *로 바꾸는 게 더 빨라보인다.
phone_number = "02-777-8888" phone_number = phone_number.replace('-', '') for i in range(len(phone_number)-4): phone_number = phone_number.replace(phone_number[i],'*') print(phone_number) # 출력결과 *****8888 ** *** 8888 (가독성을 위해 띄어쓰기를 포함한 결과를 첨부합니다.)
- 테스트 케이스 결과가 더 처참해졌다.
- 아래와 같이 테스트를 해봤을 때, 맨 마지막 인덱스가 *로 출력된다. 왜 그럴까?
phone_number = "031-777-4567" phone_number = phone_number.replace('-', '') for i in range(len(phone_number)-4): phone_number = phone_number.replace(phone_number[i],'*') print(phone_number) # 출력결과 ******456* *** *** 456*
- replace 함수를 사용했을 때, phone_number[i] 가 7일 때, 모든 7을 *으로 바꿔주기 때문에 발생한 문제.
[문제점 해결]
- replace 대신 인덱싱을 사용해서 출력해보자.
phone_number = "031-777-4567" phone_number = phone_number.replace('-', '') protected_phone_number = '*' * (len(phone_number)-4) + phone_number[-4:] print(protected_phone_number)
[프로그래머스 최종 제출 코드]
def solution(phone_number): protected_phone_number = '*' * (len(phone_number)-4) + phone_number[-4:] return protected_phone_number
[실수를 통해 배운 점]
1. 모든 예외를 다 생각할 순 없다.
2. 그렇다면 어떻게 하면 모든 예외를 생각하지 않아도 예외처리할 수 있는 방법을 생각해보자.
+
문제에서 요구하는 것 이외에도 다른 문제를 만들어 낸 점은 잘했다.
다양한 시도를 할 수 있는 방법을 배웠다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Python] 프로그래머스 : 같은 숫자는 싫어 (0) 2024.07.17 [Python] 프로그래머스 : 최대공약수와 최소공배수 (0) 2024.07.17 [Python] 프로그래머스 : 제일 작은 수 제거하기 (0) 2024.07.16 [Python] 프로그래머스 : 정수 제곱근 판별 (0) 2024.07.16 [Python] 프로그래머스 : 문자열 내 p와 y의 개수 (2) 2024.07.16