반응형
1. Scanner를 이용한 방법
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//바구니 총 개수
int N = sc.nextInt();
//공을 바꾸는 횟수
int M = sc.nextInt();
int[] num = new int[N];
//바구니에 공이 1개씩 들어있음
for(int t=0; t<num.length; t++){
num[t] = t+1;
}
//M개의 줄에 걸쳐 교환할 방법
for(int i=0; i<M; i++){
//i번 바구니와 j번 바구니
int I = sc.nextInt();
int J = sc.nextInt();
//temp는 변수값을 바꿔주기 위해 사용하는 변수
//바구니의 공 교환
//인덱스는 0부터이므로 -1
int temp = num[I-1];
num[I-1] = num[J-1];
num[J-1] = temp;
}
for(int k=0; k<num.length; k++){
System.out.print(num[k] + " ");
}
sc.close();
}
}
2. BufferedReader를 이용한 방법
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
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[] num = new int[N];
//바구니에 공이 1개씩 들어있음
for(int t=0; t<num.length; t++){
num[t] = t+1;
}
//M개의 줄에 걸쳐 교환할 방법
for(int i=0; i<M; i++){
StringTokenizer st2 = new StringTokenizer(br.readLine(), " ");
//i번 바구니와 j번 바구니
int I = Integer.parseInt(st2.nextToken());
int J = Integer.parseInt(st2.nextToken());
//temp는 변수값을 바꿔주기 위해 사용하는 변수
//바구니의 공 교환
//인덱스는 0부터이므로 -1
int temp = num[I-1];
num[I-1] = num[J-1];
num[J-1] = temp;
}
for(int k=0; k<num.length; k++){
System.out.print(num[k] + " ");
}
br.close();
}
}
처음에는 I 바구니와 J 바구니의 공을 교환하는 걸 단순히 그냥 num[I-1] = num[J-1]; 이렇게 했었는데,
방법을 찾아보니 따로 temp라는 임의의 변수를 만들어서 거기에 넣었다가 옮기는 방식으로 공을 교환하면 된다.
단계가 올라갈수록 어려워지니 문제 푸는 게 힘들어지기 시작했다ㅠ 그래도 꾸준히 해나가보려고 한다....
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 3052 - 나머지 (0) | 2024.02.18 |
---|---|
[백준] 5597 - 과제 안 내신 분..? (0) | 2024.02.17 |
[백준] 10810 - 공 넣기 (0) | 2024.02.15 |
[백준] 2562 - 최댓값 (0) | 2024.02.14 |
[백준] 10818 - 최소, 최대 (0) | 2024.02.13 |