본문 바로가기

코딩테스트/Programmers

[Programmers/프로그래머스]핸드폰 번호 가리기

728x90
반응형

문제 설명

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
  • phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"

풀이

이 문제는 슬라이싱과 문자열의 연산을 알고 있으면 쉽게 풀 수 있다.

  • 문자열의 곱셈 : 똑같은 문자열이 곱한 숫자 개수만큼 합쳐진 문자열이 반환됨. ex) "하이" * 3 == "하이하아하이"
  • 문자열의 덧셈  : 앞의 문자열 바로 뒤에 뒤에 문자열이 붙은 형태의 문자열이 반환됨. ex) "하"+"이" == "하이"
  • 문자열 슬라이싱 : 문자열의 원하는 부분만 추출할 수 있음. ex) "안녕하세요"[:2] == "안녕"

먼저 * 처리를 해보자, 끝에 4자리를 제외한 나머지는 *로 변환 할 것이므로 phone_number의 길이 -4 만큼의 숫자를 *과 곱해준다.

그리고 슬라이싱으로 phone_number[-4:]를 해주면 뒤에서 4칸 앞에 부터 끝까지 문자열이 추출된다.

앞에서 구한 두개의 문자열을 + 연산자로 더한 값을 반환하면 된다.

 

def solution(phone_number):
    return '*'*(len(phone_number)-4)+phone_number[-4:]
728x90
반응형