본문 바로가기

언어/Java

[ 자바 / Java ] 나머지 연산자 % 사용하기

반응형

자바의 나머지 연산자(%)는 두 숫자를 나눈 후의 나머지를 계산하는 데 사용됩니다. 이 연산자는 모듈로 연산(modulus operation)으로도 알려져 있습니다. 나머지 연산자는 정수뿐만 아니라 부동 소수점 숫자에도 적용될 수 있습니다. 이를 통해 다양한 계산과 알고리즘에서 유용하게 사용할 수 있습니다.

1. 나머지 연산자의 기본 동작

나머지 연산자는 두 피연산자를 나눈 후, 나누어 떨어지지 않는 부분(즉, 나머지)을 반환합니다. 이는 수학적인 나머지 계산과 동일합니다.

예시:

int a = 10;
int b = 3;
int remainder = a % b;

System.out.println("Remainder: " + remainder); // 출력: 1

위의 예시에서 10 % 3의 결과는 1입니다. 이는 103으로 나누면 몫이 3이고, 나머지가 1이기 때문입니다.

2. 나머지 연산자의 사용 사례

나머지 연산자는 여러 가지 상황에서 유용하게 사용될 수 있습니다. 다음은 몇 가지 일반적인 사용 사례입니다:

  1. 짝수 및 홀수 확인:
    • 숫자가 짝수인지 홀수인지 확인할 때 사용됩니다. 숫자를 2로 나눈 나머지가 0이면 짝수, 1이면 홀수입니다.
      int number = 7;
      if (number % 2 == 0) {
        System.out.println(number + " is even.");
      } else {
        System.out.println(number + " is odd.");
      }
  2. 주기적인 동작 구현:
    • 나머지 연산자는 주기적인 동작을 구현하는 데 사용할 수 있습니다. 예를 들어, 배열의 인덱스를 순환할 때 유용합니다.
      int[] array = {10, 20, 30, 40, 50};
      for (int i = 0; i < 10; i++) {
        System.out.println(array[i % array.length]);
      }
  3. 시간 계산:
    • 시간 계산에서 나머지 연산자는 유용하게 사용됩니다. 예를 들어, 초를 분과 초로 변환할 때 사용됩니다.
      int totalSeconds = 3675;
      int minutes = totalSeconds / 60;
      int seconds = totalSeconds % 60;
      
    System.out.println(minutes + " minutes and " + seconds + " seconds."); // 61 minutes and 15 seconds.
  4. 윤년 계산:
    • 윤년을 계산할 때도 나머지 연산자를 사용할 수 있습니다. 4로 나누어 떨어지고, 100으로 나누어 떨어지지 않거나, 400으로 나누어 떨어지면 윤년입니다.
      int year = 2024;
      if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        System.out.println(year + " is a leap year.");
      } else {
        System.out.println(year + " is not a leap year.");
      }

3. 부동 소수점 숫자에 대한 나머지 연산

자바에서는 정수뿐만 아니라 부동 소수점 숫자에도 나머지 연산자를 사용할 수 있습니다. 이 경우 결과는 부동 소수점 형식으로 나머지가 반환됩니다.

예시:

double x = 9.75;
double y = 2.5;
double result = x % y;

System.out.println("Remainder: " + result); // 출력: 2.25

위의 예시에서 9.75 % 2.5의 결과는 2.25입니다. 이는 9.752.5로 나누었을 때 몫이 3이고, 나머지가 2.25이기 때문입니다.

4. 나머지 연산과 부호

나머지 연산자의 결과는 피연산자의 부호에 따라 다릅니다. 자바에서 나머지 연산은 다음과 같은 규칙을 따릅니다:

  1. 첫 번째 피연산자가 음수이면 결과는 음수입니다.
  2. 첫 번째 피연산자가 양수이면 결과는 양수입니다.

예시:

int a = -10;
int b = 3;
int result1 = a % b;

int c = 10;
int d = -3;
int result2 = c % d;

System.out.println("Result1: " + result1); // 출력: -1
System.out.println("Result2: " + result2); // 출력: 1

위의 예시에서 -10 % 3의 결과는 -1이며, 10 % -3의 결과는 1입니다. 이는 첫 번째 피연산자의 부호를 따른 결과입니다.

5. 나머지 연산자의 주의 사항

  • 나눗셈과 달리, 나머지 연산에서는 0으로 나눌 수 없습니다. x % 0ArithmeticException을 발생시킵니다.
  • 실수에 대한 나머지 연산은 정수에 대한 연산과 다르게 동작할 수 있습니다. 부동 소수점의 정밀도에 주의해야 합니다.
  • 큰 수를 처리할 때, 나머지 연산의 결과가 예상치 못한 값이 될 수 있으므로, 값의 범위에 주의해야 합니다.

나머지 연산자 사용 예제

다양한 경우에 사용될 수 있는 나머지 연산자의 예제를 보겠습니다.

public class ModulusExample {
    public static void main(String[] args) {
        // 정수 연산
        int a = 17;
        int b = 5;
        System.out.println("17 % 5 = " + (a % b)); // 2

        // 부동 소수점 연산
        double x = 5.75;
        double y = 2.0;
        System.out.println("5.75 % 2.0 = " + (x % y)); // 1.75

        // 음수 연산
        int c = -15;
        int d = 4;
        System.out.println("-15 % 4 = " + (c % d)); // -3

        // 짝수/홀수 확인
        int number = 42;
        if (number % 2 == 0) {
            System.out.println(number + " is even.");
        } else {
            System.out.println(number + " is odd.");
        }

        // 주기적 동작
        String[] days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
        for (int i = 0; i < 10; i++) {
            System.out.println(days[i % days.length]);
        }

        // 시간 계산
        int totalSeconds = 4853;
        int minutes = totalSeconds / 60;
        int seconds = totalSeconds % 60;
        System.out.println("4853 seconds is " + minutes + " minutes and " + seconds + " seconds.");
    }
}

 

이 예제에서는 다양한 상황에서 나머지 연산자를 사용하는 방법을 보여줍니다.

자바의 나머지 연산자는 수학적인 계산뿐만 아니라, 알고리즘 구현과 일상적인 프로그래밍 작업에서도 유용하게 사용될 수 있습니다.

반응형