안녕하세요! 데코입니다!
오늘은 프로그래머스 코딩테스트 연습에 있는 "핸드폰 번호 가리기" 문제를 포스팅하려고 합니다!
바로 포스팅 시작할게요! :)
(출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12948)
1. 문제 : 핸드폰 번호 가리기(Lv. 1)
2. 문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때,
전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수,
solution을 완성해주세요.
[ 제한 사항 ]
phone_number는 길이 4 이상, 20 이하인 문자열입니다.
[ 입출력 예 및 설명 ]
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
입출력 예 #1
"01033334444"은 10자리로 이뤄져 있습니다.
뒷자리 4개를 제외한 앞 6개의 숫자를 " * "로 나타내었습니다.
입출력 예 #2
"027778888"은 9자리로 이뤄져 있습니다.
뒷자리 4개를 제외한 앞 5개의 숫자를 " * "로 나타내었습니다.
3. 문제 풀이
# 1안
def solution(phone_number):
char_pn = str(phone_number)
char_hide = '*' * (len(char_pn)-4)
answer = char_hide + char_pn[-4:]
return answer
문제 설명에 맞는 코드를 작성하기 위해서 1안 한 가지로 작성했습니다!
# 1안 풀이 설명
# [ 문제 풀이 설명 ]
문제와 입출력 예시를 보며, 주어진 phone_number를 인덱싱과 슬라이싱 해야겠다고 생각을 했어요!
인덱싱을 하기 위해 phone_number를 문자열로 변환해 char_pn이라는 변수를 생성해주었습니다.
또한 문자열의 길이를 계산하기 위해 len() 함수를 사용해서 길이를 구하였고
맨 뒤의 4자리는 고정적으로 번호를 나타내야 하므로
len()을 통해 구한 길이에서 4자리를 뺀 수만큼 ' * '를 반복한 값을 char_hide라는 변수로 만들었어요!
이후 char_hide의 값과 char_pn에서 맨 뒤 4자리를 가져온 값을 결합하여
answer라는 값에 할당해 주었습니다!
phone_number = 01033334444을 예로 들어볼게요!
char_pn = ' 01033334444 '
len(char_pn) = 11
char_hide = (11-4) 만큼 ' * ' 반복 = ' ******* '
char_pn에서 맨 뒤 4자리 = char_pn[-4:] = ' 4444 '
char_hide + char_pn[-4:] = ' ******* ' + ' 4444 ' = '*******4444'
따라서 위 값을 answer 변수에 할당해 주었습니다.
# 1안
def hide_phone_number(phone_number):
# 전화번호를 문자열로 변환
char_pn = str(phone_number)
# 숨길 문자열 길이 계산
char_hide = '*' * (len(char_pn) - 4)
# 숨긴 문자열과 마지막 4자리를 연결하여 반환
answer = char_hide + char_pn[-4:]
return answer
4. 문제 풀이 후기
이번 문제는 주어진 x가 하샤드 수인지를 판별하는 문제였습니다.
주어진 숫자를 문자열로 바꿔서 문자열 길이를 산출하고
슬라이싱으로 뒤 4자리는 유지한 채, 앞의 자리는 모두 ' * '로 표현하는 코드를 짜보았습니다!
이 외에는 어려운 부분이 없어서 제가 따로 코멘트할 것은 없습니다!
이번 포스팅은 프로그래머스에 있는
python을 이용한 코딩테스트 문제를 풀어보았습니다!
설명이 어려운 부분 혹은 잘 이해가 안 가는 부분
그리고 더 궁금한 내용이 있다면
언제든지 댓글로 남겨주세요!
빠르게 궁금증을 해결해 드릴게요!
공감과 댓글은 큰 힘이 됩니다!
오늘도 블로그 방문해 주시고
포스팅 읽어주셔서 감사합니다!
'Skill Sets > Python' 카테고리의 다른 글
[Python] n부터 m까지 자연수의 합(프로그래머스/python/COS Pro 2급) (59) | 2023.12.22 |
---|---|
[Python] 음양 더하기(프로그래머스/python/Level 1) (55) | 2023.12.09 |
[Python] 하샤드 수(프로그래머스/python/Level 1) (77) | 2023.09.30 |
[Python] 콜라츠 추측(프로그래머스/python/Level 1) (42) | 2023.08.24 |
[Python] 문자열 내 p와 y의 개수(프로그래머스/python/Level 1) (37) | 2023.08.19 |