일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 삼항연산자
- [파이썬 실습] 중급 문제
- 프론트개발
- 자바스크립트
- 자바스크립트 날씨 웹 만들기
- 날씨 웹 만들기
- JavaScript
- 자바스크립트 sort()
- 자바스크립트 날씨
- [파이썬 실습] 기초 문제
- 간단한 날씨 웹 만들기
- 부트캠프
- 개발일기
- 코드스테이츠
- 자바스크립트 reduce()
- 엘리스
- reactnativecli
- 리트코드
- HTML
- [AI 5기] 연습 문제집
- 엘리스 AI 트랙 5기
- 코딩부트캠프
- 개발공부
- 자바스크립트 split()
- leetcode
- RN 프로젝트
- 엘리스 ai 트랙
- 프로그래머스
- 프론트개발공부
- [파이썬 실습] 심화 문제
- Today
- Total
개발조각
[프로그래머스] 핸드폰 번호 가리기 본문

해결방안
function solution(phone_number) {
return phone_number.slice(-4).padStart(phone_number.length, '*')
}
이 문제의 입출력 예에서 return값을 보자마자 이건 padStart()메서드를 사용하면 쉽게 구할 수 있겠다.라는 생각이 들었습니다.
padStart()메서드가 뭔지 살펴보자면
MDN Web Docs
padStart() 메서드는 현재 문자열의 시작을 다른 문자열로 채워, 주어진 길이를 만족하는 새로운 문자열을 반환합니다. 채워 넣기는 대상 문자열의 시작(좌측)부터 적용됩니다.
구문 : str.padStart(targetLength [, padString])
- targetLength : 목표 문자열 길이. 현재 문자열의 길이보다 작다면 채워 넣지 않고 그대로 반환.
- padString Optional : 현재 문자열에 채워 넣을 다른 문자열. 문자열이 너무 길어 목표 문자열 길이를 초과한다면 좌측 일부를 잘라서 넣음. 기본값은 " ". (U+0020)
// padStart()메서드 예제
const str1 = '5';
console.log(str1.padStart(2, '0')); //"05"
문제에서 "phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수"를 구하라 했습니다.
이걸 padStart()로 적용한 상태로 쓰자면
- phone_number의 뒷 4자리.padStart(phone_number의 문자열 길이, '*')
이렇게 쓰면 해결됩니다.
해결방안 순서
- phone_number문자열을 뒷 4자리만 반환하기 : return phone_number.slice(-4)
- padStart를 사용해서 뒷 4자리 제외 나머지는 *로 바꾸기 : padStart(phone_number.length, '*')
1단계. phone_number문자열을 뒷 4자리만 반환하기 : phone_number.slice(-4)
문자열 뒤에 4자리만 반환하려면 slice()메서드를 쓰시면 쉽게 구할 수 있습니다.
MDN Web Docs
String.prototype.slice()
slice() 메서드는 문자열의 일부를 추출하면서 새로운 문자열을 반환합니다.
문법 : str.slice(beginIndex[, endIndex])
beginIndex
추출 시작점인 0부터 시작하는 인덱스입니다.
만약 음수라면, beginIndex는 strLength(문자열 길이) + beginIndex로 취급됩니다.
(예를 들어 beginIndex가 -3이면 시작점은 strLength - 3).
만약 beginIndex가 strLength 보다 크거나 같은 경우, slice()는 빈 문자열을 반환합니다.
endIndex
0부터 시작하는 추출 종료점 인덱스로 그 직전까지 추출됩니다.
인덱스 위치의 문자는 추출에 포함되지 않습니다.
만약 endIndex가 생략된다면, silce()는 문자열 마지막까지 추출합니다.
만약 음수라면, endIndex는 strLength(문자열 길이) + endIndex로 취급됩니다.
(예를 들어 endIndex가 -3이면 종료점은 strLength - 3)
// String.slice()메서드 예제
const str = 'The quick brown fox jumps over the lazy dog.';
console.log(str.slice(31)); // "the lazy dog."
console.log(str.slice(4, 19)); // "quick brown fox"
console.log(str.slice(-4)); // "dog."
console.log(str.slice(-9, -5)); // "lazy"
테스트 1 (phone_number = "01033334444")
phone_number.slice(-4) -> "01033334444".slice(-4) -> "4444"
테스트 2 (phone_number = "027778888")
phone_number.slice(-4) -> "027778888" .slice(-4) -> "8888"
2단계. padStart를 사용해서 뒷 4자리 제외 나머지는 *로 바꾸기 : padStart(phone_number.length, '*')
padStart를 사용해서 뒷 4자리 제외하고 앞자리를 다 *로 바꾸어 주어야 됩니다.
- str.padStart(목표 문자열 길이, 현재 문자열에 채워 넣을 다른 문자열)
목표 문자열 길이 : phone_number.length
전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가리라고 해서 문자열의 길이를 넣어주었습니다.
현재 문자열에 채워 넣을 다른 문자열 : '*'
전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가리라고 해서 '*'을 넣어주었습니다.
테스트 1 (phone_number = "01033334444")
phone_number.slice(-4) -> "01033334444".slice(-4) -> "4444"
padStart(phone_number.length, '*') -> "*******4444"
테스트 2 (phone_number = "027778888")
phone_number.slice(-4) -> "027778888" .slice(-4) -> "8888"
padStart(phone_number.length, '*') -> "*****8888"
여기까지 프로그래머스 핸드폰 번호 가리기 해결방안에 대해 설명해보았습니다.
'알고리즘🅰 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 직사각형 별찍기 (0) | 2022.03.10 |
---|---|
[프로그래머스] 행렬의 덧셈 (0) | 2022.03.08 |
[프로그래머스] 하샤드 수 (0) | 2022.03.08 |
[프로그래머스] 평균 구하기 (0) | 2022.03.08 |
[프로그래머스] 콜라츠 추측 (0) | 2022.03.07 |