반응형
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번 문제의 일부를 예제로 가져왔다.
반응형
'언어 > JAVA' 카테고리의 다른 글
JAVA - hasNextLine() 읽을 값이 있으면 true, 없으면 false (0) | 2023.05.25 |
---|---|
JAVA - String 문자열을 char 배열로 변환하는 방법 (0) | 2023.05.25 |
JAVA - char 배열에서 String 문자열로 변환하는 방법 (0) | 2023.05.25 |
[Java] String과 char 차이점 (0) | 2023.04.15 |