두 자연수 M, N을 입력받아 M부터 N까지 각 자리수의 빈도수를 합하는 프로그램을 제작하시오.
예를 들어 129와ㅏ 137이 주어졌을 때, 129, 130 ... 137 숫자가 나오고 이 숫자들은 자리수 별 숫자 빈도수를 계산하여 0부터 9까지의 빈도수 값을 반환한다.
입력 값은 M, N은 10,000이하의 자연수 이며, 0부터 9까지의 자리수 별 빈도수를 배열 형태로 반환한다.
입력값
[129, 137], [1412, 1918], [4159, 9182],
function answer(s, e) {
let result = [];
// 0. 각 자리수 별 인덱스를 초기화 해준다.
for (let i = 0; i < 10; i++) {
result[i] = 0
}
// 1. s <= n <= e
for (let i = s; i <= e; i++) {
num = i
// 2. n => % / 자리수 별 숫자 카운팅
while (num != 0) {
result[num % 10]++;
num /= 10;
num = parseInt(num);
}
}
return result;
}
- 이 문제는 주어진 s, e의 값 사이에 있는 수를 출력하고, 그 수들의 1의 자리 10의 자리 100의 자리 ... 를 구하는 문제이다.
- 각 자리의 인덱스를 초기화 하는 코드를 먼저 작성 해준다.
for문을 이용하여 result 배열의 각 요소에 0을 넣어준다.result = [0, 0, 0, 0, 0, 0, 0, 0, 0]
- s가 e보다 같거나 작을 때까지 순회하는 for문을 작성한다.
- num에 i의 값을 담아준다.
1에서 말한 s ~ e까지 사이의 있는 수를 담아주는 것임- while문을 이용하여 result에 자리수 별 숫자를 카운팅 하여 담아준다.