10813 - 공 바꾸기알고리즘/백준2023. 8. 17. 20:40
Table of Contents
이전 배열문제들과 똑같이 배열을 먼저 생성해준뒤, 각 바구니에 1~N까지 순서대로 공을 넣어놓고
변수 tmp를 통해 해당 바구니의 값을 바꿔준다.
tmp = arr[a-1];
arr[a-1] = arr[b-1];
arr[b-1] = tmp;
위 코드가 가장 중요한 로직인데,
먼저 a,b에 -1을 해주는 이유는 문제에서 바구니는 1시작하지만 배열의 인덱스는 0부터 시작하기때문에 -1을 해주어 맞춰주는 것이다.
그리고 tmp변수를 사용하는이유는
arr[a-1] = arr[b-1]과 같이 b인덱스 값을 a인덱스 값으로 바로 넣어버리면 a인덱스 값이 가지고있는 값은 소멸되버리기때문에
tmp에 먼저 저장을 해둔뒤 b인덱스 값을 a로 옮기고 b에 tmp가 가지고있는 a값을 넣어주는 것이다.
package boj;
import java.util.Scanner;
public class b10813 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); //바구니의 개수
int M = sc.nextInt(); //공을 바꾸는 횟수 //반복할 횟수
int[] arr = new int[N];
for(int i=0; i<arr.length; i++) {
arr[i] = i+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;
}
for(int tmp : arr) {
System.out.print(tmp + " ");
}
}
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
3952 - 나머지 (0) | 2023.08.17 |
---|---|
5597 - 과제 안 내신 분..? (0) | 2023.08.17 |
10810 - 공넣기 (0) | 2023.08.17 |
2562 - 최댓값 (0) | 2023.08.17 |
10818 - 최소, 최대 (0) | 2023.08.17 |
@leegeonwoo :: geonwoo
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!