๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/4992)
< Hanafuda Shuffle >
๋ฌธ์ ํ์ด
Stack 3๊ฐ๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
1) ์ ์ฒด ์นด๋ ์์๋ฅผ ์ ์ฅํ๋ Stack
2) ๋งจ ์๋ก ์ฌ๋ฆฌ๋ ค๋ ์นด๋ ์์ p-1์ฅ์ ์นด๋๋ฅผ ์ ์ฅํ๋ Stack
3) ๋งจ ์๋ก ์ฌ๋ฆฌ๋ ค๋ c์ฅ์ ์นด๋๋ฅผ ์ ์ฅํ๋ Stack
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
import java.util.StringTokenizer;
public class _4992_ { // Hanafuda Shuffle
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
String str = "";
Stack<Integer> stack = new Stack<>();
Stack<Integer> temp = new Stack<>();
Stack<Integer> move = new Stack<>();
while (!(str = bf.readLine()).equals("0 0")) {
st = new StringTokenizer(str);
int n = Integer.parseInt(st.nextToken());
int r = Integer.parseInt(st.nextToken());
for (int i = 1; i <= n; i++) {
stack.add(i);
}
for (int i = 0; i < r; i++) {
st = new StringTokenizer(bf.readLine());
int p = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
for (int j = 1; j < p; j++) {
temp.add(stack.pop());
}
for (int j = 0; j < c; j++) {
move.add(stack.pop());
}
while (!temp.isEmpty()) {
stack.add(temp.pop());
}
while (!move.isEmpty()) {
stack.add(move.pop());
}
}
bw.write(stack.peek() + "\n");
stack.clear();
}
bw.flush();
}
}
๋ณ์)
str : ์ ๋ ฅ๊ฐ
stack : ์ ์ฒด ์นด๋ ์์๋ฅผ ์ ์ฅํ๋ Stack
temp : ๋งจ ์๋ก ์ฌ๋ฆฌ๋ ค๋ ์นด๋ ์์ p-1์ฅ์ ์นด๋๋ฅผ ์ ์ฅํ๋ Stack
move : ๋งจ ์๋ก ์ฌ๋ฆฌ๋ ค๋ c์ฅ์ ์นด๋๋ฅผ ์ ์ฅํ๋ Stack
n, r : ์นด๋ ์, ์๋ฅด๊ธฐ ์ฐ์ฐ์ ํ์
p, c : p๋ฒ์งธ ์นด๋, c์ฅ
์ ๋ ฅ๊ฐ์ด "0 0"์ด ์๋ ๋๊น์ง ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) ์นด๋ ์, ์๋ฅด๊ธฐ ์ฐ์ฐ์ ํ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค.
2) ์นด๋ ์๋งํผ ์นด๋๋ฅผ stack์ ์ ์ฅํ๋ค.
3) ์๋ฅด๊ธฐ ์ฐ์ฐ์ ํ์๋งํผ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
3-1) ์๋ฅด๋ ค๋ ์นด๋ ์์น์ ๋ช ์ฅ ์๋ฅผ ๊ฑด์ง ์ ๋ ฅ๋ฐ๋๋ค.
3-2) p-1๊ฐ๋ฅผ temp์ ์ ์ฅํ๋ค.
3-3) c๊ฐ๋ฅผ move์ ์ ์ฅํ๋ค.
3-4) temp๊ฐ ๋น ๋๊น์ง stack์ ์ ์ฅํ๋ค.
3-5) move๊ฐ ๋น ๋๊น์ง stack์ ์ ์ฅํ๋ค.
4) stack์ peek ๊ฐ์ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 3277_DOMAINS (0) | 2025.11.07 |
|---|---|
| [Baekjoon] 10106_The Geneva Confection (0) | 2025.11.06 |
| [Baekjoon] 6379_Scramble Sort (0) | 2025.11.05 |
| [Baekjoon] 29882_Ranking (0) | 2025.11.04 |
| [Baekjoon] 21149_Unread Messages (0) | 2025.11.03 |