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

JavaScript에서 n번째 회문(팰린드롬) 수 찾기

문제 정의

숫자 n을 인자로 받는 자바스크립트 함수를 작성해야 합니다. 이 함수는 0부터 세었을 때 n번째에 해당하는 회문(팰린드롬) 수를 반환해야 합니다.

예를 들어 첫 번째 회문은 0, 두 번째는 1, 열 번째는 9입니다. 10은 앞뒤가 같지 않아 회문이 아니므로, 열한 번째 회문은 11이 됩니다.

예제 코드

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

const num = 31;
const findNthPalindrome = (num = 1) => {
   const isPalindrome = (num = 1) => {
      const reverse = +String(num)
      .split('')
      .reverse()
      .join('');
      return reverse === num;
   };
   let count = 0;
   let i = 0;
   while(count < num){
      if(isPalindrome(i)){
         count++;
      };
      i++;
   };
   return i - 1;
};
console.log(findNthPalindrome(num));

출력 결과

콘솔 출력 결과는 다음과 같습니다.

212

코드 동작 원리

이 코드의 핵심은 두 가지 함수로 나눌 수 있습니다.

1. isPalindrome 함수: 숫자를 String()으로 문자열로 변환한 뒤, split('')으로 각 자릿수 배열로 만들고 reverse()로 뒤집은 후 다시 join('')으로 합칩니다. 뒤집힌 값과 원래 값이 같다면 회문으로 판단하여 true를 반환합니다.

2. findNthPalindrome 함수: 0부터 시작해 하나씩 숫자를 증가시키며(i++) 각 숫자가 회문인지 검사합니다. 회문을 발견할 때마다 count를 증가시키고, count가 목표인 num에 도달하면 반복문을 종료합니다. 마지막 반복에서 이미 i가 한 번 더 증가된 상태이므로 i - 1을 반환하여 정확한 n번째 회문 수를 구합니다.

이 예제에서는 31번째 회문 수인 212가 결과로 출력됩니다.