😈 k의 개수
📗 문제 설명
1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i
, j
, k
가 매개변수로 주어질 때, i
부터 j
까지 k
가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.
👀 제한사항
- 1 ≤
i
<j
≤ 100,000 - 0 ≤
k
≤ 9
📃 입출력 예
i | j | k | result |
---|---|---|---|
1 | 13 | 1 | 6 |
10 | 50 | 5 | 5 |
3 | 10 | 2 | 0 |
💬입출력 예 설명
입출력 예 설명 #1
- 본문과 동일합니다.
입출력 예 설명 #2
- 10부터 50까지 5는 15, 25, 35, 45, 50 총 5번 등장합니다. 따라서 5를 return 합니다.
입출력 예 설명 #3
- 3부터 10까지 2는 한 번도 등장하지 않으므로 0을 return 합니다.
💎나의 풀이
문제를 읽었을때 의문이 들었는데 "1은 1,10,11,12,13 총 6번 등장합니다."
누가 봐도 5개가 아닌가...
아.. 369마냥 11,22,33.... 들은 그냥 2개 취급 하는구나
반복문을 돌리려 했지만, 배열연습중이니 배열로 해보자.
우선 배열을 만들어 주자.
배열의 조건은 i ~ j 까지의 배열이다.
const solution = (i,j,k) => {
const arr = Array.from({length : j-i+1},(_,idx)=> i+idx)
}
우선 만들어 주고 문제에서 요구하는것은 11,22,33 ... 을 2개 취급하는 것이니까 다시 문자열로 바꿔주자.
const solution = (i,j,k) => {
const arr = Array.from({length : j-i+1},(_,idx)=> i+idx).join('')
}
어차피 개수만 구하면 되니 arr.length - arr에서 k를 지운 length = 정답 이 된다.
const solution = (i,j,k) => {
const arr = Array.from({length : j-i+1},(_,idx)=> i+idx).join('')
return arr.length - arr.replaceAll(k,'').length
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 😈] JavaScript 한 번만 등장한 문자 (0) | 2023.10.18 |
---|---|
[프로그래머스 😈] JavaScript 숨어있는 숫자의 덧셈 (2) (0) | 2023.10.17 |
[프로그래머스 😈] JavaScript 숫자 찾기 (0) | 2023.10.17 |
[프로그래머스 😈] 모스 부호 (1) | 2023.10.17 |
[프로그래머스 😈] JavaScript 중복된 문자 제거 (0) | 2023.10.17 |