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

자바(Java)로 두 숫자를 교환(Swap)하는 프로그램 만들기 – 알고리즘과 예제 코드

이 글에서는 자바(Java)로 두 숫자의 값을 서로 바꾸는(swap) 방법을 소개합니다. 가장 대표적이고 안전한 방식은 임시 변수(temporary variable)를 하나 두고 값을 차례대로 옮기는 것입니다.

교환(Swap)의 기본 원리

두 변수의 값을 그냥 맞바꾸면, 먼저 대입한 쪽의 기존 값이 덮어써져 사라지게 됩니다. 따라서 첫 번째 값을 임시 변수에 미리 저장해 둔 뒤 교환 작업을 진행해야 값을 안전하게 보존할 수 있습니다.

입력

입력값이 다음과 같다고 가정해 보겠습니다.

value_1 : 45
value_2 : 70

출력

원하는 실행 결과는 다음과 같습니다.

value_1 : 70
value_2 : 45

알고리즘

STEP 1 - 시작
STEP 2 - 정수형 변수 세 개 선언: value_1, value_2, temp
STEP 3 - 값 입력받기
STEP 4 - value_1의 값을 임시 변수 temp에 저장
STEP 5 - value_2의 값을 value_1에 대입
STEP 6 - temp에 저장해 둔 값을 value_2에 대입
STEP 7 - 교환된 두 값 출력
STEP 8 - 종료

예제 1: Scanner로 사용자 입력값 교환하기

아래 예제는 java.util.Scanner 클래스를 사용해 사용자가 직접 입력한 두 숫자를 교환합니다. 온라인 코딩 도구에서 직접 실행해 보며 결과를 확인할 수 있습니다.

import java.util.Scanner;
public class NumbersSwap{
   public static void main(String[] args){
      int value_1, value_2, my_temp;
      System.out.println("The required packages have been imported");
      Scanner my_scan = new Scanner(System.in);
      System.out.println("A scanner object has been defined ");
      System.out.println("Enter the first number");
      value_1 = my_scan.nextInt();
      System.out.println("Enter the second number");
      value_2 = my_scan.nextInt();
      System.out.println("----Before swap----");
      System.out.println("The first value is " + value_1 + " and the second value is " + value_2 );
      my_temp = value_1;   // 첫 번째 값을 임시 변수에 저장
      value_1 = value_2;   // 두 번째 값을 첫 번째 변수에 대입
      value_2 = my_temp;   // 임시 변수에 저장해 둔 값을 두 번째 변수에 대입
      System.out.println("----After swap----");
      System.out.println("The first value is " + value_1 + " and the second value is " + value_2 );
   }
}

실행 결과

The required packages have been imported
A scanner object has been defined
Enter the first number
112
Enter the second number
34
----Before swap----
The first value is 112 and the second value is 34
----After swap----
The first value is 34 and the second value is 112

실행 결과를 보면 첫 번째 값은 112에서 34로, 두 번째 값은 34에서 112로 성공적으로 교환된 것을 확인할 수 있습니다.

예제 2: 고정된 값으로 교환하기

사용자 입력 없이 코드 안에 값을 직접 지정해서 교환할 수도 있습니다.

public class NumbersSwap{
   public static void main(String[] args){
      int value_1 , value_2, my_temp;
      System.out.println("The required packages have been imported");
      value_1 = 45;
      value_2 = 70;
      System.out.println("----Before swap----");
      System.out.println("The first number is " + value_1 + " and the second number is " + value_2 );
      my_temp = value_1;
      value_1 = value_2;
      value_2 = my_temp;
      System.out.println("----After swap----");
      System.out.println("The first number is " + value_1 + " and the second number is " + value_2 );
   }
}

실행 결과

The required packages have been imported
----Before swap----
The first number is 45 and the second number is 70
----After swap----
The first number is 70 and the second number is 45

보너스: 임시 변수 없이 두 수 교환하기

임시 변수를 사용하지 않고 산술 연산만으로도 두 수를 교환할 수 있습니다. 다만 큰 수를 다룰 때 오버플로우가 발생할 수 있고 가독성도 떨어지기 때문에, 실무에서는 임시 변수 방식을 사용하는 것이 권장됩니다.

value_1 = value_1 + value_2;  // 두 값의 합계를 value_1에 저장
value_2 = value_1 - value_2;  // 합계에서 value_2를 빼면 원래 value_1
value_1 = value_1 - value_2;  // 합계에서 새로운 value_2를 빼면 원래 value_2

마무리

자바에서 두 숫자를 교환하는 가장 안전하고 명확한 방법은 임시 변수를 활용하는 것입니다. Scanner를 이용하면 사용자 입력값도 손쉽게 처리할 수 있으니, 위의 예제 코드를 직접 실행하며 동작 과정을 익혀 보시기 바랍니다.