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

JavaScript로 자릿수 합 기준 홀수(Oddish)·짝수(Evenish) 판별하기

Oddish와 Evenish란?

숫자의 모든 자릿수를 더한 합계가 홀수이면 해당 숫자를 Oddish(홀디시), 합계가 짝수이면 Evenish(이븐니시)라고 부릅니다.

예를 들어 434667의 각 자릿수를 더하면 4 + 3 + 4 + 6 + 6 + 7 = 30으로 짝수이므로, 이 숫자는 Evenish에 해당합니다.

문제 요구 사항

주어진 숫자가 Oddish인지 Evenish인지 판별하는 함수를 작성해야 하며, 반환 값은 다음과 같습니다.

  • 숫자가 Oddish이면 true
  • 숫자가 Evenish이면 false

재귀를 활용한 해결 방법

재귀 함수를 사용하면 반복문 없이도 코드를 매우 간결하게 작성할 수 있습니다. 숫자를 10으로 나눈 몫을 계속 재귀적으로 전달하면서 각 자릿수를 누적 합산하고, 마지막에 합계가 홀수인지만 검사하면 됩니다.

예제 코드

const num = 434667;
const isOddish = (num, sum = 0) => {
    if(num){
        return isOddish(Math.floor(num / 10), sum + (num % 10));
    };
    return sum % 2 === 1;
};
console.log(isOddish(num));

실행 결과

false

코드 동작 원리

  1. 자릿수 추출: num % 10 연산으로 현재 숫자의 마지막 자릿수를 구합니다.
  2. 재귀 호출: Math.floor(num / 10)으로 마지막 자릿수를 제거한 값을 다시 함수에 전달하고, 방금 추출한 자릿수를 sum에 더해 누적합니다.
  3. 종료 조건: num이 0이 되면 재귀가 종료되며, 누적된 합계를 2로 나눈 나머지가 1인지(즉 홀수인지) 확인해 결과를 반환합니다.

위 예제에서 434667의 자릿수 합은 30으로 짝수, 즉 Evenish에 해당하기 때문에 콘솔에는 false가 출력됩니다. 만약 자릿수 합이 홀수인 숫자(예: 123 → 1 + 2 + 3 = 6은 짝수이므로 false, 111 → 3은 홀수이므로 true)를 넣으면 결과가 달라지는 것을 직접 확인해 볼 수 있습니다.