728x90
반응형
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
내 풀이 1
// 내 풀이 1
// for문과 substr을 이용한 풀이
function solution(phone_number){
let front = '';
for(let i = 0; i<phone_number.length-4; i++){
front += '*';
}
let back = phone_number.substr(phone_number.length-4,4);
return front+back;
}
🔥 풀이
length - n | length-5 | length-4 | length-3 | length-2 | length-1 | ||||||
인덱스1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
phone_number | 0 | 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
인덱스2 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
👉 휴대폰 맨 뒤 4자리를 제외한 숫자들은 *로 교체되어야 한다.
*를 '휴대폰 번호의 길이 - 5'(phone_number.length - 5) 까지 for문으로 가리고, 맨 뒤에서부터 4자리는 substr로 잘랐다.
내 풀이 2
// 내 풀이 2
// repeat와 substring을 이용한 풀이
function solution2(phone_number) {
let front = '*'.repeat(phone_number.length-4);
let back = phone_number.substring(phone_number.length-4,phone_number.length);
return front+back;
}
👉 for문을 쓰지 않고, repeat로 *를 반복하고, substring으로 휴대폰 번호 뒷 4자리를 추출
내 풀이 3
// 내 풀이 3
// repeat와 slice(-4)를 이용한 풀이
// slice는 -1 부터 시작하면 맨 뒷자리부터 탐색해서 해당 문자열부터 맨 뒤 문자열까지 문자열을 반환하는 것이 가능하다.
function solution3(phone_number) {
let front = '*'.repeat(phone_number.length-4);
let back = phone_number.slice(-4);
return front+back;
}
👉 slice()를 쓰면 맨 뒷자리 부터 탐색하여 문자열을 반환하는 것이 가능하다.
휴대폰 번호는 맨 뒤에서 4번째부터 맨 뒷자리까지 반환해야 하므로 slice(-4)로 문자열을 반환하였다.
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[lv.1] x만큼 간격이 있는 n개의 숫자 (0) | 2022.05.17 |
---|---|
[lv.1] 행렬의 덧셈 (0) | 2022.05.17 |
[lv.1] 평균 구하기 (0) | 2022.05.16 |
[lv.1] 음양 더하기 (0) | 2022.05.16 |
[lv.1] 없는 숫자 더하기 (0) | 2022.05.14 |