도우미 변수 없이 두 변수의 값 바꾸기

프로그래밍 인터뷰를 할 때나 프로그래밍 테스트 중에 두 변수 간에 값을 교환하는 코드를 작성하라는 요청을 받은 적이 있습니까? 그렇다면 어떻게 합니까?



이 작업을 수행하는 가장 고전적이고 유명한 방법은 도우미 변수의 도움을 사용하여 두 변수 중 하나의 값에 대한 임시 쉼터 역할을 하는 것입니다.

아래는 이 메소드를 구현한 코드입니다.

소스 코드 1:

public static void main(String[] args) {
    int a = 4;
    int b = 5;
    int temp;

    temp = a;
    a = b;
    b = temp;

    System.out.println("Variable a: " + a);
    System.out.println("Variable b: " + b);
}


소스 코드 1에서 변수temp 값의 임시 저장소 역할을 하는 도우미 변수a가 있음을 알 수 있습니다.

출력 1:

Variable a: 5
Variable b: 4


출력 1에서 변수a가 이미 변수b의 이전 값에 의해 점유된 것을 볼 수 있습니다.


그러나 두 변수의 값을 교환하는 데 사용할 수 있는 멋진 수학 트릭이 하나 있습니다. 이 트릭에서는 도우미 변수가 필요하지 않습니다. 비결은 교환할 변수에서 더하기 및 빼기 연산을 수행한다는 것입니다.

작동 방식은 다음과 같습니다.
  • 값이 4인 변수a와 값이 5인 변수b가 있다고 가정합니다.
  • 변수 a에 변수 b를 추가하고 변수 a에 저장하여 이제 변수a의 값이 9가 되도록 합니다.
  • 다음으로 변수a를 변수b로 줄여 변수b에 저장하여 변수b의 값이 4가 되도록 합니다.
  • 마지막으로 변수a에서 변수b를 빼 변수a에 저장하므로 변수a의 현재 값은 5입니다.

  • 더 명확하게 하기 위해 이 방법의 구현으로 소스 코드 2를 볼 수 있습니다.

    소스 코드 2:

    public static void main(String[] args) {
        int a = 4;
        int b = 5;
    
        a = a + b;
        b = a - b;
        a = a - b;
    
        System.out.println("Variable a: " + a);
        System.out.println("Variable b: " + b);
    }
    


    소스 코드 2에서는 이 스왑 프로세스에 도움이 되는 헬퍼 변수가 없음을 알 수 있습니다.

    출력 2:

    Variable a: 5
    Variable b: 4
    


    출력 2에서 소스 코드 2를 구현한 결과가 변수a와 변수b의 값이 교환된다는 예상과 일치하는 것을 볼 수 있습니다.


    축하합니다. 면접관이나 강사에게 깊은 인상을 주기 위해 사용할 수 있는 이 간단하고 멋진 요령을 배웠습니다.


    표지 이미지:

    https://i.picsum.photos/id/962/1920/720.jpg?hmac=oN1aUzZuuUM6aR1lRB91s6Y8GYZQ1ZEmpIY-c8NL_h8

    다른 이미지:

    https://cdn-images-1.medium.com/max/2560/1*mQ2zfd2fN75igCOeW9iWrw.jpeg

    좋은 웹페이지 즐겨찾기