자료구조 및 알고리즘/JavaScript Practice
JS Practice) 프로그래머스 : 숫자 빈도수 구하기
Ryomi
2023. 3. 13. 22:57
728x90
반응형

숫자 빈도수 구하기
문제설명
: 두 자연수 M, N을 받아 N에서 M까지의 자연수에서 0~9의 각 빈도수 값을 배열로 반환
제한 사항
N, M은 10,000 이하의 자연수
입출력 예
N, M | result |
129, 137 | [1, 10, 2, 9, 1,1,1,1,0,1] |
1412, 1918 | [100, 614, 101, 101, 189, 201, 201, 201, 201, 119] |
첫번째 접근
: N부터 M까지의 숫자들을 string으로 만들어 합쳤다.
그리고 요소로 0을 가진 길이 10의 배열을 만들었다.
string으로 만든 배열을 돌며 arr에 string배열 요소의 인덱스 값에 1을 더해주어 문제를 해결했다.
function solution(N, M) {
let arr = new Array(10).fill(0);
let str = ''
for(let i=N; i<=M; i++){
str += String(i)
}
str.split('').map(el => arr[Number(el)] = arr[Number(el)] + 1);
return arr;
}
두번째 접근
: map은 새로운 배열을 return 하지만 forEach(이전에 사용한 배열을 사용)는 반환값이 없으므로 메모리 사용에 약간의 차이가 난다. map 대신 forEach를 사용해보았다.
function solution(N, M) {
let arr = new Array(10).fill(0);
let str = ''
for(let i=N; i<=M; i++){
str += String(i)
}
str.split('').forEach(el => arr[Number(el)] = arr[Number(el)] + 1);
return arr;
}
solution
function answer(s, e) {
let result = new Array(10).fill(0)
let num;
for(let i=s; i<=e; i++){
num = i;
while (num != 0) {
result[num % 10]++;
num /= 10;
num = parseInt(num);
}
}
return result
}
// while 부분 CHK
728x90
반응형