Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 0부터 n까지 셀 때 숫자 9가 등장하는 횟수 구하기

문제 소개

이번 문제에서는 숫자 n을 인자로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 0부터 n까지 숫자를 하나씩 세어 나가는 과정에서 숫자 9가 총 몇 번 등장하는지 계산하고, 그 횟수를 반환해야 합니다.

예를 들어 n이 100이라면, 9, 19, 29처럼 일의 자리에 9가 들어가는 경우와 90~99처럼 십의 자리에 9가 들어가는 경우를 모두 포함하여 총 20번의 9가 등장하게 됩니다.

예제 코드

다음은 위 문제를 해결하는 JavaScript 코드입니다 −

const num = 100;
const countNine = (num = 0) => {
   const countChar = (str = '', char = '') => {
      return str
      .split('')
      .reduce((acc, val) => {
         if(val === char){
            acc++;
         };
         return acc;
      }, 0);
   };
   let count = 0;
   for(let i = 0; i <= num; i++){
      count += countChar(String(i), '9');
   };
   return count;
};
console.log(countNine(num));

코드 동작 원리

이 코드는 크게 두 부분으로 나누어 동작합니다.

1. countChar 헬퍼 함수: 문자열과 찾고자 하는 문자를 인자로 받아, 해당 문자가 문자열 안에 몇 번 등장하는지 세는 역할을 합니다. 내부적으로 split('')으로 문자열을 개별 문자 배열로 분리한 뒤, reduce()를 사용해 일치하는 문자의 개수를 누적합니다.

2. 메인 반복 로직: 0부터 n까지 모든 숫자를 순회하면서 각 숫자를 String(i)로 문자열로 변환한 후, countChar 함수를 호출해 '9'의 등장 횟수를 누적합니다. 이렇게 하면 한 자리 숫자뿐만 아니라 여러 자리 숫자 속의 모든 9를 놓치지 않고 셀 수 있습니다.

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다 −

20

n이 100일 때 9는 일의 자리에서 10번(9, 19, 29, ..., 99), 십의 자리에서 10번(90~99) 등장하므로 최종 결과는 20이 됩니다.