카테고리 없음
[Algorithm] 핸드폰 번호 가리기
sod0l
2024. 9. 13. 11:26
1. 문제 개요
- 문제 제목: 핸드폰 번호 가리기
- 문제 설명: 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해 주세요.
- 문제 해설: 개인정보 보호를 위해 핸드폰 번호를 숨겨야 한다. 주어진 전화번호 문자열 `phone_number`에서, 뒷 4자리를 제외한 나머지 숫자를 모두 `*`로 가려서 반환하는 함수를 작성해야 한다.
2. 문제 해결 전략
- 단계 1: 전화번호의 길이를 계산하고, 뒷4 자리를 제외한 나머지 부분을 파악한다.
- 단계 2: 나머지 부분을 `*`로 대체한다.
- 단계 3: 마지막 4자리와 `*`로 가린 부분을 결합하여 반환한다.
3. 코드 분석
function solution(phone_number) {
// 전화번호 길이에서 마지막 4자리만 남기고, 나머지는 '*'로 대체한다.
var answer = '*'.repeat(phone_number.length - 4) + phone_number.slice(-4);
return answer;
}
3-1) 메소드 및 함수 설명
- 메소드/함수 이름: `repeat()`
- 용도: 문자열을 주어진 횟수만큼 반복한다.
- 설명: 지정된 횟수만큼 문자열을 반복하여 새로운 문자열을 생성한다.
- `'*'.repeat(phone_number.length - 4)` 는 다음과 같은 의미를 가진 표현식이다.
- `'*'`: 문자열 `'*'`을 나타낸다.
- `repeat(n)`: 이 메소드는 문자열을 `n`번 반복하여 새로운 문자열을 만든다.
- 즉, `'*',repeat(phone_number.length - 4)는 전화번호의 전체 길이에서 마지막 4자리를 제외한 부분을 `'*'`로 채운 문자열을 생성한다.
- **phone_number.slice(0, 4)**는 문자열의 처음부터 인덱스 4까지의 부분 문자열인 '1234'를 반환한다.
- **phone_number.slice(-4)**는 문자열의 마지막 4자리를 반환하여 '7890'을 생성한다.
- 사용 예: `'abc'.repeat(3)` 은 `'abcabcabc'` 문자열을 반환한다.
- 메소드/함수 이름: `slice()`
- 용도: 문자열의 일부를 잘라서 반환한다.
- 설명: 문자열의 특정 부분을 잘라내어 새로운 문자열을 생성한다. 음수 인덱스를 사용하여 문자열의 끝에서부터 잘라낼 수 있다.
- 사용 예: `'12345'.slice(-4)` 은 `'2345'` 문자열을 반환한다.
3-2) 코드 분석 부분
- 중요 코드 부분:
'*'.repeat(phone_number.length - 4) + phone_number.slice(-4)
- 설명: `'*'.repeat(phone_number.length - 4)`는 전화번호의 뒷 4자리를 제외한 나머지 부분을 `*`로 가린다. `phone_number.slice(-4)`는 전화번호의 마지막 4자리를 잘라낸다. 두 부분을 합쳐서 최종 결과를 생성한다.
- 장점: 코드가 간결하고 직관적이다. `repeat()` 메소드와 `slice()` 메소드를 사용하여 문제를 쉽게 해결할 수 있다.
4) 코드의 역할 및 활용
4-1) 코드의 역할
- 주어진 전화번호에서 뒷 4자리를 제외한 나머지 부분을 `*`로 가려서 개인정보를 보호하는 데 사용된다. 최종적으로 가려진 전화번호 문자열을 반환하여 결과를 제공한다.
4-2) 적용 예시
- 개인정보 보호가 필요한 상황에서 유용하다. 예를 들어, 사용자에게 전화번호의 일부만 보여줘야 하는 경우, 고객 서비스나 보안 로그에서 전화번호를 가려야 할 때 적용할 수 있다.