반응형
https://www.acmicpc.net/problem/10813
- 문제
- 문제 풀이
백준 10813번 공 바꾸기는 브론즈 2 난이도의 구현 및 시뮬레이션 문제이다.
이 문제에서는 N개의 바구니가 주어지고 각각 바구니들은 1부터 N까지 적혀있다. 그리고 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이 들어있다.
이때 M개 줄에 걸쳐서 자연수 i와 j가 주어진따. 이때, i번째 바구니에 들어있는 공을 j번째 바구니에 들어있는 공과 바꾸면 된다. 그리고 마지막에 각각 바구니에 몇 번 공이 들어있는지 출력하면 된다.
우선 사이즈가 N+1인 배열을 만들고 인덱스 i는 i번째 바구니를 뜻한다. 그리고 i번째 인덱스를 i로 설정한다.
그리고 StringTokenizer를 이용해서 i와 j를 입력받는다. 그리고 arr [i]와 arr [j]를 서로 바꿔주면 된다. 이때 바꿔주기 위해서 새로운 int형 변수 temp를 만들어 arr [i]를 저장한다. arr [i]와 arr [j]를 저장하는 건 다음과 같이 하면 된다.
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
자세한 코드는 아래에 있는 코드를 참고하면 되겠다.
- 코드
import java.io.*;
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[] arr = new int[n+1];
for (int i = 1; i <= n; i++) {
arr[i] = i;
}
for (int k = 1; k <= m; k++) {
st = new StringTokenizer(br.readLine());
int i = Integer.parseInt(st.nextToken());
int j = Integer.parseInt(st.nextToken());
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= n; i++) {
sb.append(arr[i] + " ");
}
System.out.println(sb);
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 2512번 : 예산 – JAVA [자바] (0) | 2023.08.07 |
---|---|
[백준] 1654번 : 랜선 자르기 – JAVA [자바] (0) | 2023.08.07 |
[백준] 10810번 : 공 넣기 – JAVA [자바] (0) | 2023.08.07 |
[백준] 2566번 : 최댓값 – JAVA [자바] (0) | 2023.08.07 |
[백준] 25314번 : 코딩은 체육과목 입니다 – JAVA [자바] (0) | 2023.08.04 |
댓글