핸드폰 번호 가리기

 

 문제 설명

 

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 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자리를 구한다

 

* 참고 링크 1 : https://velog.io/@cosmos/Programmers%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%95%B8%EB%93%9C%ED%8F%B0-%EB%B2%88%ED%98%B8-%EA%B0%80%EB%A6%AC%EA%B8%B0-python

* 참고 링크 2 : https://velog.io/@como/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%ED%95%B8%EB%93%9C%ED%8F%B0-%EB%B2%88%ED%98%B8-%EA%B0%80%EB%A6%AC%EA%B8%B0python

 

* 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

+ Recent posts