수학과의 좌충우돌 프로그래밍

핸드폰 번호 가리기(프로그래머스-level1) 본문

알고리즘/파이썬

핸드폰 번호 가리기(프로그래머스-level1)

ssung.k 2018. 9. 7. 16:50

안녕하세요 강민성입니다.


이번엔 간단한 문제지만 배울 점이 있어서 쉬운 문제를 하나 들고 왔습니다.


문제 한 번 보실까요?



[문제]

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때

고객들의 전화번호의 일부를 가립니다.

전화번호가 문자열 phone_number로 주어졌을 때,

전화번호의 뒷 4자리를 제외한 나머지 숫자를

전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.


제한 조건

s는 길이 4 이상, 20이하인 문자열입니다.


입출력 예

phone_number    return

01033334444 *******4444

027778888    *****8888



문제를 푸는데는 크게 어려움이 없었습니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(phone_number):
 
    answer = '' # 빈 문자열을 만든다.
 
    for i in range(len(phone_number[:-4])): # 처음부터 뒤에서 5번째꺼 까지 반복을 해주는데
 
        answer += "*" # 빈 문자열 answer에 * 을 추가해주고
 
    for i in phone_number[-4:]: # phone_number 리스트에서 뒤에서 4번째부터 마지막까지
 
        answer += i # answer 에 넣어준다.
 
    return answer
cs



반복문 두 개를 사용해서 다음과 같이 코드를 짜봤습니다.


리스트 뿐만 아니라 문자열에서도 indexing 이 되기 때문에 뒤에서 부터 4개와 그 나머지로 나눌 수 있었습니다.


하지만 아무래도 반복문을 두 개 쓰다보니까 찜찜함이 남아있더라고요.


그래서 더 간결한 코드를 봐보도록 하겠습니다.


1
2
3
def solution(s):
 
    return "*"*(len(s)-4+ s[-4:]
cs



반복문을 사용하지도 않고 한 줄로 끝났습니다.


이렇게 한 줄로 간단하게 쓸 수 있는 이유는 파이썬은 문자열의 곱셈이 가능합니다!


되게 유용하게 쓸 수 있는 부분이라 알아두시면 도움이 되실겁니다.


한 줄 짜리 코드지만 풀이를 해보면


s 문자열의 길이에서 4를 뺀 만큼 * 을, s 문자열의 뒷 부분 4개를 더해줍니다.


반복문도 없이 쉽게 나타낼 수 있죠.



마무리


level 1 에서도 그렇게 어려운 문제는 아니었습니다.


하지만 '문자열의 곱셈' 이라는 중요한 부분이 있어서 포스팅 해봤습니다.


문제를 풀 줄 알더라도 최상의 답을 찾아내는 것도 중요한 듯 합니다 ㅎㅎ


오늘도 모두 열공 하시길 바랍니다~

Comments