세자리 수의 곱으로 이루어진 가장 큰 회문(palindrome) 찾기

세자리 수의 곱으로 이루어진 가장 큰 회문(palindrome) 찾기

회문(palindrome)이란 앞으로 읽으나 뒤집어 읽으나 똑같은 문자열을 말합니다.

이번 포스팅에서는 세 자리 숫자의 곱으로 이루어진 수 중, 가장 큰 회문을 이루는 숫자를 찾는 방법에 대해 학습해 보고자 합니다.

저는 아래와 같은 방법으로 상기 문제를 해결해 보고자 합니다. - 우선 주어진 숫자가 회문인지 아닌지 확인하는 function을 별도로 만들고자 합니다. - 세자리 숫자로 이루어진 두 수를 곱한 후, 그 수가 회문이면 별도의 배열에 요소로 추가를 합니다. - 이후 이 배열에서 가장 큰 수를 찾습니다.

function isPalindrome(pal) {
  var reverseNum = parseInt(
    pal
      .toString()
      .split('')
      .reverse()
      .join('')
  );
  return pal === reverseNum;
}

function largestPalindrome() {
  var num1,
    num2,
    product,
    palindrome = [];
  for (num1 = 100; num1 <= 999; num1++) {
    for (num2 = 100; num2 <= 999; num2++) {
      product = num1 * num2;
      if (isPalindrome(product)) {
        palindrome.push(product);
      }
    }
  }
  return Math.max(...palindrome);
}

largestPalindrome(); // => 906609

저는 학습한 내용을 포스팅하며 재정리하는 입장이기 때문에, 지나가며 이 글을 보고 이상한 점이나 혹은 다른 조언해 주실 사항 코멘트로 달아주시면 감사하겠습니다. :)