본문 바로가기

Skill Sets/Python

[Python] 핸드폰 번호 가리기(프로그래머스/python/Level 1)

SMALL

안녕하세요! 데코입니다!

 

오늘은 프로그래머스 코딩테스트 연습에 있는 "핸드폰 번호 가리기" 문제를 포스팅하려고 합니다!

 

바로 포스팅 시작할게요! :)

(출처 : 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을 이용한 코딩테스트 문제를 풀어보았습니다!

 

설명이 어려운 부분 혹은 잘 이해가 안 가는 부분

그리고 더 궁금한 내용이 있다면

언제든지 댓글로 남겨주세요!

빠르게 궁금증을 해결해 드릴게요!

공감과 댓글은 큰 힘이 됩니다!

오늘도 블로그 방문해 주시고

포스팅 읽어주셔서 감사합니다!

 

 

LIST