핸드폰 번호 가리기
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 사항
- s는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
Python 코드
def solution(phone_number):
answer = ''
phone_len = len(phone_number)
answer += '*' * (phone_len -4) + phone_number[-4:]
return answer
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
def solution(s):
return "*"*(len(s)-4) + s[-4:]
- len ( ) 함수로 문자열의 총 길이를 구한다.
- 4자리마 가리면되므로 치호나할 개순느 총 개수 -4이다.
- python에서는 문자 * 복사할 개수의 연산이 가능하다.
- index slicing으로 뒷 4자리를 구한다
* len() 함수 : 매개변수로 들어온 문자열의 길이를 반환
- 내부에 있는 문자의 갯수 및 공백을 포함한 카운팅을 하여 반환해주는 함수
- 문자열의 길이를 구할 때 용이
strlen = "HelloWorld"
print(len(strlen))
# 결과값 10
* Slicing(슬라이싱) : 연속적인 객체들에 범위를 지정한 후 선택해서 객체들을 가져오는 방법
- 기본 형태
a[start : end : step]
- start : 슬라이싱을 시작할 시작 위치
- end : 슬라이싱을 끝낼 위치로 end는 포함되지 않음
- step : stride(보폭)라고도 불리며, 몇 개씩 끊어서 가져올지와 방향을 정하는 옵션
- 인덱스 값들의 위치
|
a = ['a', 'b', 'c', 'd', 'e'] |
|
|
|
# Index References |
|
# ------------------------------- |
|
# | a | b | c | d | e | |
|
# ------------------------------- |
|
# | 0 | 1 | 2 | 3 | 4 | // 양수의 경우 |
|
# ------------------------------- |
|
# | -5 | -4 | -3 | -2 | -1 | // 음수의 경우 |
|
# ------------------------------- |
- 특정 시작위치부터 끝까지 가져오기
- a[ start : ]
|
a = ['a', 'b', 'c', 'd', 'e'] |
|
|
|
a[ 1 : ] |
|
# result : ['b', 'c', 'd', 'e'] |
|
|
|
a[ -3 : ] |
|
# result : ['c', 'd', 'e'] |
- 시작점부터 특정 위치까지 가져오기
- a[ : end ]
|
a = ['a', 'b', 'c', 'd', 'e'] |
|
a[ : 2 ] |
|
|
|
# result : ['a', 'b'] |
- 특정 위치부터 특정 위치까지 모두 가져오기
- a[ start : end ]
|
a = ['a', 'b', 'c', 'd', 'e'] |
|
|
|
a[ 2 : 4 ] |
|
# result : ['c', 'd'] |
|
|
|
|
|
a[ -4 : -2 ] |
|
# result : ['b', 'c'] |
* 참고 링크 : https://twpower.github.io/119-python-list-slicing-examples
C++ 코드
#include <string>
#include <vector>
using namespace std;
string solution(string phone_number) {
string answer = "";
int size = phone_number.size();
for(int i=0; i<size-4; i++){
answer += '*';
}
for(int i=size-4; i < size; i++){
answer += phone_number.at(i);
}
return answer;
}
* 참고 링크 : https://jjeongil.tistory.com/612
'코딩테스트 > Programmers' 카테고리의 다른 글
[코딩테스트/Programmers] 10_이상한 문자 만들기 (Lv1.) (0) | 2022.01.03 |
---|---|
[코딩테스트/Programmers] 09_약수의 합 (Lv1.) (0) | 2022.01.03 |
[코딩테스트/Programmers] 07_서울에서 김서방 찾기 (Lv1.) (0) | 2021.12.26 |
[코딩테스트/Programmers] 06_가운데 글자 가져오기 (Lv1.) (0) | 2021.12.26 |
[코딩테스트/Programmers] 05_두 정수 사이의 합 (Lv1.) (0) | 2021.12.26 |