일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- javascript
- c++
- js
- MAC
- 알고리즘 풀이
- react
- 알고리즘 연습
- DRF
- Algorithm
- 파이썬
- PYTHON
- es6
- 알고리즘 문제
- form
- web
- HTML
- Django
- 알고리즘
- API
- Baekjoon
- django ORM
- 장고
- django rest framework
- 파이썬 알고리즘
- Git
- django widget
- CSS
- java
- 백준
- AWS
Archives
- Today
- Total
수학과의 좌충우돌 프로그래밍
핸드폰 번호 가리기(프로그래머스-level1) 본문
안녕하세요 강민성입니다.
이번엔 간단한 문제지만 배울 점이 있어서 쉬운 문제를 하나 들고 왔습니다.
문제 한 번 보실까요?
[문제]
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때
고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 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 에서도 그렇게 어려운 문제는 아니었습니다.
하지만 '문자열의 곱셈' 이라는 중요한 부분이 있어서 포스팅 해봤습니다.
문제를 풀 줄 알더라도 최상의 답을 찾아내는 것도 중요한 듯 합니다 ㅎㅎ
오늘도 모두 열공 하시길 바랍니다~
'알고리즘 > 파이썬' 카테고리의 다른 글
유클리드 알고리즘과 확장된 유클리드 알고리즘 (1) | 2018.12.01 |
---|---|
숫자게임(프로그래머스-level3) (0) | 2018.09.16 |
시저암호(프로그래머스-level1) (1) | 2018.09.06 |
같은 숫자는 싫어(프로그래머스-level1) (0) | 2018.09.06 |
땅따먹기(프로그래머스-level2) (4) | 2018.08.07 |
Comments