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

C 프로그래밍에서 임시 변수 없이 두 숫자를 교환하는 방법

C 프로그래밍에서는 세 번째 변수(임시 변수)를 사용하지 않고도 덧셈과 뺄셈 연산만으로 두 숫자의 값을 서로 교환(swap)할 수 있습니다. 이 방법은 메모리 사용을 줄이고, 알고리즘의 논리적 사고력을 기르는 데에도 도움이 됩니다.

알고리즘

덧셈과 뺄셈을 이용한 교환 알고리즘은 다음과 같습니다.

START

Step 1: 두 개의 변수 x와 y를 선언한다.
Step 2: 키보드로부터 두 숫자를 입력받는다.
Step 3: 아래 연산을 적용하여 두 숫자를 교환한다.
    i.  x = x + y
    ii. y = x - y
    iii.x = x - y
Step 4: x와 y의 값을 출력한다.

프로그램

다음은 임시 변수 없이 두 숫자를 교환하는 과정을 보여주는 C 프로그램입니다.

#include<stdio.h>
int main(){
    int x,y;
    printf("enter x and y values:");
    scanf("%d%d",&x,&y); // 예: x=20, y=30 입력
    x=x+y; // x = 20+30 = 50
    y=x-y; // y = 50-30 = 20
    x=x-y; // x = 50-20 = 30
    printf("After swap x=%d and y=%d",x,y);
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

enter x and y values:20 30
After swap x=30 and y=20

동작 원리 이해하기

x=20, y=30일 때 각 단계별로 값이 어떻게 변하는지 살펴보면 다음과 같습니다.

  • x = x + y → x에는 두 수의 합인 50이 저장됩니다.
  • y = x - y → 50에서 원래 y값(30)을 빼면 원래 x값인 20이 y에 저장됩니다.
  • x = x - y → 50에서 새로 저장된 y값(20)을 빼면 원래 y값인 30이 x에 저장됩니다.

이렇게 하여 두 변수의 값이 서로 교환됩니다.

곱셈과 나눗셈을 이용한 방법

참고: 임시 변수 없이 두 숫자를 교환하는 방법은 곱셈과 나눗셈 연산 또는 비트 단위 XOR 연산자를 사용해서도 가능합니다.

다음은 곱셈과 나눗셈 연산자를 활용하여 두 숫자를 교환하는 또 다른 예제입니다.

프로그램

#include<stdio.h>
int main(){
    int x,y;
    printf("enter x and y values:");
    scanf("%d%d",&x,&y);
    x=x*y;
    y=x/y;
    x=x/y;
    printf("After swap x=%d and y=%d",x,y);
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

enter x and y values:120 250
After swap x=250 and y=120

주의 사항

곱셈과 나눗셈을 이용한 방법은 한쪽 값이 0일 경우 나눗셈 오류(0으로 나누기)가 발생할 수 있으므로 주의해야 합니다. 반면 덧셈과 뺄셈을 이용한 방법은 0이 포함되어도 안전하게 동작하며, 매우 큰 수를 다룰 때는 오버플로우 가능성만 염두에 두면 됩니다. 실무에서는 이러한 특성을 고려하여 상황에 맞는 방법을 선택하는 것이 좋습니다.