본문 바로가기

언어/JAVA

JAVA 두 변수의 값 바꾸기 tmp

반응형

int a = 10, int b = 20일 때

두 변수에 담긴 값을 서로 바꾸기 위해서는 어떻게 해야 하는가?

 

tmp를 몰랐을 때 처음 시도했던 것은 if문이다.

if (a!=b) {
	a = b;
	b = a;
	}

하지만, 생각해 보면 a = b; 를 실행하면 이미 a의 값은 20이 될 것이고,

그 이후에 b = a; 를 실행되니 20=20 이 실행될 것이다.

 

그렇다면 어떻게 두 변수의 값을 교환할 수 있을까?

tmp라는 임시저장소를 사용하는 것이다.

 

tmp = a;
a = b;
b = tmp;

int a = 10;  int b = 20; 으로 가정한다면             //a=10, b=20, tmp=null;

 

a의 값인 10을 왼쪽에 있는 tmp에 저장해 두고, //a=10, b=20, tmp=10;

b의 값인 20을 왼쪽에 있는 a에 저장한다.        //a=20, b=20, tmp=10;

그다음 tmp의 값인 10을 b안으로 넣어주면     //a=20, b=10, tmp=10;

 

이렇게 두 수를 변경하는 것이다.

 

//arr[a-1]의 값과 arr[b-1]의 값을 바꾸려면

for(int i=0; i<M; i++) {
	int tmp;
	int a = sc.nextInt();
	int b = sc.nextInt();
    
	tmp = arr[a-1];
	arr[a-1] = arr[b-1];
	arr[b-1] = tmp;
}

백준 10813번 문제의 일부를 예제로 가져왔다.

반응형