알고리즘 풀이
[백준]10813번: 공 바꾸기 - java 풀이
코디드
2023. 4. 11. 00:30
배열 + StringBuilder 풀이)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
for(int i=0; i<N; i++) {
arr[i]=i+1;
}
StringBuilder sb = new StringBuilder();
for(int idx=0; idx<M; idx++) {
st = new StringTokenizer(br.readLine(), " ");
int i = Integer.parseInt(st.nextToken());
int j = Integer.parseInt(st.nextToken());
int temp = arr[i-1];
arr[i-1]=arr[j-1];
arr[j-1]=temp; // 12345 21345 21435 31425
}
for(int result : arr) {
sb.append(result+ " ");
}
System.out.println(sb);
}
}
이전 문제와 비슷하면서도 살짝 다른 문제다.
두 개를 서로 교환하는데,
arr[i-1]=arr[j-1];
arr[j-1]=arr[i-1];
이렇게 교환할 경우, arr[i-1]에 arr[j-1]이 초기화 됐기 때문에, arr[j-1]에 arr[i-1]을 초기화하는 것은 자기 자신을 초기화 하는것과 같다.
int temp = arr[i-1];
arr[i-1]=arr[j-1];
arr[j-1]=temp;
그러므로 arr[i-1]을 temp라는 변수에 초기화한 후에, arr[i-1]에 arr[j-1]을 초기화 해주고, arr[j-1]에 temp를 초기화 해주면, 두 수가 서로 자리를 바꾼 것이 된다.
이걸 생각 못해서 푸는데 한참 걸렸지만, 다른 블로그를 참고하지 않고 스스로 풀어낸걸로 위안을 삼아야겠다.