https://www.acmicpc.net/problem/10813
배열 안에 수를 바꿀 땐 임시의 변수를 생성한 후 반복문 안에서 주소를 준다.
arr[a] = arr[b]가 아닌
temp = arr[a]
arr[a] = arr[b]
arr[b] = temp로 사용해야한다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int temp;
int arr[] = new int [n];
for(int i = 0; i < arr.length; i++){
arr[i] = i+1;
}
for(int a = 0; a < m; a++){
st = new StringTokenizer(br.readLine());
int i = Integer.parseInt(st.nextToken());
int j = Integer.parseInt(st.nextToken());
temp = arr[i - 1];
arr[i - 1] = arr[j - 1];
arr[j - 1] = temp;
}
for(int i = 0; i < n; i++){
bw.write(arr[i] + " ");
}
br.close();
bw.flush();
bw.close();
}
}
배열의 크기를 i와 j로만 해서 값이 변하지 않아 시간이 오래걸렸다.