[백준/JAVA] 22858번: 원상 복구 (small)
📖 문제
22858번: 원상 복구 (small)
$P_1, P_2, \cdots , P_N$의 수가 적혀 있는 $N$개의 카드가 있다. 1부터 N까지 수가 하나씩 존재하는 수열 $D_1, D_2, \cdots , D_i , \cdots , D_N$이 있다. 이때 각 $i$에 대해 $D_i$번째 카드를 $i$번째로 가져오는
www.acmicpc.net
💡 풀이 방식
• 구현, 시뮬레이션
. 임의의 배열을 생성하고, 그 다음 k번 섞은 배열의 값을 임의의 배열에 값으로 넣는다.
. 원래 배열에 값을 넣는다.
▷ 배열 D에서 {4,3,1,2,5}는 1번째 카드는 4번째로 옮겨야하고, 2번째 카드는 3번째로 옮겨야하고, 3번째 카드는 1번째로 옮겨야 한다. 나머지도 이렇게 진행
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
import java.util.*;
import java.io.*;
public class Main {
static int N, K;
static int[] arr, D, tmp;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
N = Integer.parseInt(st.nextToken()); // 카드 개수
K = Integer.parseInt(st.nextToken()); // 카드 섞은 횟수
// K번 카드 섞은 배열
arr = new int[N + 1];
st = new StringTokenizer(br.readLine(), " ");
for(int i = 1 ; i <= N ; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
// D 배열
D = new int[N + 1];
st = new StringTokenizer(br.readLine(), " ");
for(int i = 1 ; i <= N ; i++) {
D[i] = Integer.parseInt(st.nextToken());
}
while(K --> 0) {
// 임의의 배열 생성
tmp = new int[N + 1];
// K번 섞은 배열의 값을 임의의 배열에 값에 넣음 (역순)
for(int i = 1 ; i <= N ; i++) {
tmp[D[i]] = arr[i]; // 예) arr의 1번째 카드는 4번째 위치로 이동해야 함
}
// 원래 배열에 넣음
arr = tmp;
}
StringBuilder sb = new StringBuilder();
for(int i = 1 ; i <= N ; i++) {
sb.append(arr[i] + " ");
}
System.out.println(sb);
}
}
|
cs |
💦 어려웠던 점
- 문제 자체가 이해가 되지 않았다..
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V | 240611 |
(참고)
백준 22858[자바] java 원상 복구 (small)
문제 링크: https://www.acmicpc.net/problem/22858 22858번: 원상 복구 (small) 수가 적혀있는 $P_1, P_2, ..., P_N$ $N$개의 카드가 있다. 1부터 N까지 수가 하나씩 존재하는 $D_1, D_2, ... , D_i , ... D_N$ 가 있다. 이때 $D_i$
dingdingmin-back-end-developer.tistory.com
백준 22858 원상 복구(small) (JAVA)
https://www.acmicpc.net/problem/22858 22858번: 원상 복구 (small) 수가 적혀있는 $P_1, P_2, ..., P_N$ $N$개의 카드가 있다. 1부터 N까지 수가 하나씩 존재하는 $D_1, D_2, ... , D_i , ... D_N$ 가 있다. 이때 $D_i$는 $P_{D_i}$
goto-pangyo.tistory.com