✏️ 문제

두 자연수 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;
}
  1. 이 문제는 주어진 s, e의 값 사이에 있는 수를 출력하고, 그 수들의 1의 자리 10의 자리 100의 자리 ... 를 구하는 문제이다.
  2. 각 자리의 인덱스를 초기화 하는 코드를 먼저 작성 해준다.
    for문을 이용하여 result 배열의 각 요소에 0을 넣어준다.
result = [0, 0, 0, 0, 0, 0, 0, 0, 0]
  1. s가 e보다 같거나 작을 때까지 순회하는 for문을 작성한다.
  2. num에 i의 값을 담아준다.
    1에서 말한 s ~ e까지 사이의 있는 수를 담아주는 것임
  3. while문을 이용하여 result에 자리수 별 숫자를 카운팅 하여 담아준다.
profile
#UXUI #코린이

0개의 댓글