한 걸음씩 기록하며
[프로그래머스 코딩테스트] 핸드폰 번호 가리기 본문
[핸드폰 번호 가리기]
문제 설명 :
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
⛏제한 조건
- s는 길이 4 이상, 20이하인 문자열입니다.
📁 입출력 예시
👉🏻 답안
1) .repeat(), .slice() 함수 사용
function solution(phone_number) {
let answer = '*'.repeat(phone_number.length-4) + phone_number.slice(-4)
return answer;
}
2) for, if 문 사용
function solution(phone_number) {
let answer = "";
for (let i = 0; i < phone_number.length; i++) {
if (i > phone_number.length - 5) {
answer += phone_number[i];
} else {
answer += "*";
}
}
return answer;
}
📑 간단한 설명
1) repeat(), slice() 함수
- str.repeat(count) : repeat는 문자열을 반복한 값을 반환하는 메서드이다. str을 count만큼 반복 출력한다.
- .slice(begin, end) : 인덱스 begin부터 end까지 return 받는다. 다만 기존의 값은 변하지 않는다.
ex) "hello".slice(1,3) -> "el"
*substring()과, slice() 의 차이점
-> 여러 차이점이 있지만 근본적인 차이점은 slice()에서는 음수를 지원한다. substring은 음수를 입력하면 0으로 계산한다.
그래서 결국 1)에서 이 두 함수를 사용한 것이다. .slice(-4)는 index -4 위치인 열부터 마지막 열까지 return 받는다는 것이다.
2) for, if 문
핸드폰 번호가 length-5보다 크면 기존 번호를 입력하고, 아니면 *로 리턴 받았다.
💪🏻 공부하면 좋을 답안
function hide_numbers(s) {
return s.replace(/\d(?=\d{4})/g, "*");
}
- 충격적인 답안이다.. 정규식이라고 한다..
var newStr = str.replace(정규식|부분 문자열, 새로운 부분 문자열|함수)
// 문자열 치환과 관련된 빌트인 함수로서, 문자열을 치환해준다.
- 일반 문자열 변환
var text = 'aaaabbbbcccc';
text.replace('b', 'a'); // aaaaabbbcccc
// 문자열에서 가장 처음으로 찾은 문자를 바꿔준다.
- 정규식을 사용한 문자열 치환
var text = 'aaaabbbbcccc';
var regexForB = /b/gi; // b 문자 전체
var regexForC = /c/gi; // c 문자 전체
text
.replace(regexForB, 'a') // aaaaaaaacccc
.replace(regexForC, 'a') // aaaaaaaaaaaa
// 이해가 가질 않는다... 정규식 앞으로 공부해야겠다..
replace() 참고문서
'알고리즘 & 코딩테스트' 카테고리의 다른 글
[프로그래머스 코딩테스트] x만큼 간격이 있는 n개의 숫자 (0) | 2022.01.15 |
---|---|
[프로그래머스 코딩테스트] 행렬의 덧셈 (0) | 2022.01.15 |
[프로그래머스 코딩테스트] 평균 구하기 (0) | 2022.01.15 |
[프로그래머스 코딩테스트] 음양 더하기 (0) | 2022.01.14 |
[프로그래머스 코딩테스트] 문자열을 정수로 바꾸기 (0) | 2022.01.14 |
Comments