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

홀수 자리와 짝수 자리 숫자 합의 차이가 0인지 확인하는 방법

문제 설명

하나의 long 정수 n이 주어졌을 때, 홀수 인덱스(위치)에 있는 숫자들의 합과 짝수 인덱스에 있는 숫자들의 합의 차이가 0인지 아닌지를 판별하는 프로그램을 작성합니다. 이때 인덱스는 0부터 시작합니다.

예시

n = 1212112

홀수 위치 요소의 합
= 2 + 2 + 1
= 5

짝수 위치 요소의 합
= 1 + 1 + 1 + 2
= 5

차이
= 5 - 5
= 0

출력
= Yes

자바(Java) 구현 예제

다음은 위 문제를 해결하기 위해 작성한 자바 프로그램입니다.

class JavaTester {
   public static int difference(int n){
      return (n % 11);
   }
   public static void main(String args[]){
      int n = 1212112;
      System.out.println("Number: " + n);
      System.out.println(difference(n) == 0 ? "Yes" : "No");
      n = 12121121;
      System.out.println("Number: " + n);
      System.out.println(difference(n) == 0 ? "Yes" : "No");
   }
}

실행 결과

Number : 1212112
Output: Yes
Number : 12121121
Output: No

핵심 원리: 11의 배수 판정법

위 코드에서 가장 눈여겨볼 부분은 복잡한 반복문 없이 단순히 n % 11만 반환한다는 점입니다. 이것이 가능한 이유는 수학의 '11의 배수 판정법' 때문입니다. 어떤 수의 자릿값을 오른쪽부터 교대로 더하고 빼았을 때 그 결과가 0 또는 11의 배수라면, 해당 수는 11의 배수입니다. 즉, 홀수 자리 숫자의 합과 짝수 자리 숫자의 합의 차이가 0이라는 조건은 곧 그 수가 11로 나누어떨어진다는 것과 동일한 의미이므로, 나머지 연산 하나만으로도 손쉽게 판별할 수 있습니다.