๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 4992_Hanafuda Shuffle

๋ฟŒ์•ผ._. 2025. 11. 10. 10:46
๋ฌธ์ œ(์ถœ์ฒ˜: 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