๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 6149_Card Stacking

๋ฟŒ์•ผ._. 2025. 9. 8. 12:23
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/6149)

< Card Stacking >

 

๋ฌธ์ œ ํ’€์ด 

 

Queue๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜๋ˆ ์ค€๋‹ค.

 

๋งŒ์•ฝ ์ž…๋ ฅ์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด

3 9 2

 

Queue : [1, 2, 3, 4, 5, 6, 7, 8, 9]

1์„ ์ฒซ ๋ฒˆ์งธ ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๊ณ  2๋ฒˆ๊ณผ 3๋ฒˆ ์นด๋“œ๋ฅผ ๋งจ ์•„๋ž˜์— ๋†“๋Š”๋‹ค.

Queue : [4, 5, 6, 7, 8, 9, 2, 3]

4๋ฅผ ๋‘ ๋ฒˆ์งธ ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๊ณ  5๋ฒˆ๊ณผ 6๋ฒˆ ์นด๋“œ๋ฅผ ๋งจ ์•„๋ž˜์— ๋†“๋Š”๋‹ค.

Queue : [7, 8, 9, 2, 3, 5, 6]

7์„ Bessie์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๊ณ  8๋ฒˆ๊ณผ 9๋ฒˆ ์นด๋“œ๋ฅผ ๋งจ ์•„๋ž˜์— ๋†“๋Š”๋‹ค.

Queue : [2, 3, 5, 6, 8, 9]

2๋ฅผ ์ฒซ ๋ฒˆ์งธ ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๊ณ  3๋ฒˆ๊ณผ 5๋ฒˆ ์นด๋“œ๋ฅผ ๋งจ ์•„๋ž˜์— ๋†“๋Š”๋‹ค.

Queue : [6, 8, 9, 3, 5]

6์„ ๋‘ ๋ฒˆ์งธ ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๊ณ  8๋ฒˆ๊ณผ 9๋ฒˆ ์นด๋“œ๋ฅผ ๋งจ ์•„๋ž˜์— ๋†“๋Š”๋‹ค.

Queue : [3, 5, 8, 9]

3์„ Bessie์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๊ณ  5๋ฒˆ๊ณผ 8๋ฒˆ ์นด๋“œ๋ฅผ ๋งจ ์•„๋ž˜์— ๋†“๋Š”๋‹ค.

Queue : [9, 5, 8]

9๋ฅผ ์ฒซ ๋ฒˆ์งธ ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๊ณ  5๋ฒˆ๊ณผ 8๋ฒˆ ์นด๋“œ๋ฅผ ๋งจ ์•„๋ž˜์— ๋†“๋Š”๋‹ค.

Queue : [5, 8]

5๋ฅผ ๋‘ ๋ฒˆ์งธ ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๊ณ  8๋ฒˆ ์นด๋“œ๋ฅผ ๋งจ ์•„๋ž˜์— ๋†“์€ ํ›„ ๋‹ค์‹œ 8๋ฒˆ ์นด๋“œ๋ฅผ ๋งจ ์•„๋ž˜์— ๋†“๋Š”๋‹ค.

Queue : [8]

8์„ Bessie์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๊ณ  ๋‚จ์€ ์นด๋“œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ข…๋ฃŒํ•œ๋‹ค.

 

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.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class _6149_ { // Card Stacking

	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 = new StringTokenizer(bf.readLine());

		int n = Integer.parseInt(st.nextToken());
		int k = Integer.parseInt(st.nextToken());
		int p = Integer.parseInt(st.nextToken());

		Queue<Integer> queue = new LinkedList<>();
		for (int i = 1; i <= k; i++) {
			queue.add(i);
		}

		ArrayList<Integer> list = new ArrayList<>();

		int idx = 1;
		while (!queue.isEmpty()) {
			int card = queue.poll();
			if (idx == n) {
				list.add(card);
			}
			if(queue.isEmpty()) {
				break;
			}
			for (int i = 0; i < p; i++) {
				queue.add(queue.poll());
			}
			idx += 1;
			if (idx > n) {
				idx = 1;
			}
		}

		Collections.sort(list);

		for (int i = 0; i < list.size(); i++) {
			bw.write(list.get(i) + "\n");
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n, k , p : ํ”Œ๋ ˆ์ด์–ด ์ˆ˜, ์นด๋“œ ๊ฐœ์ˆ˜, ์นด๋“œ ๋ฐฐ๋ถ„ ์‹œ ๋งจ ๋ฐ‘์œผ๋กœ ๋ณด๋‚ผ ์นด๋“œ ์ˆ˜
list : ์ข‹์€ ์นด๋“œ ๋ฐฐ์น˜ํ•˜๋Š” ์ˆœ์„œ
idx : ํ˜„์žฌ ์นด๋“œ๋ฅผ ๋ฐ›์„ ํ”Œ๋ ˆ์ด์–ด

 

ํ”Œ๋ ˆ์ด์–ด ์ˆ˜, ์นด๋“œ ๊ฐœ์ˆ˜, ์นด๋“œ ๋ฐฐ๋ถ„ ์‹œ ๋งจ ๋ฐ‘์œผ๋กœ ๋ณด๋‚ผ ์นด๋“œ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. Queue์— ์นด๋“œ ๊ฐœ์ˆ˜๋งŒํผ ์นด๋“œ๋ฅผ ์ €์žฅํ•œ ํ›„ Queue๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) Queue poll

2) ํ˜„์žฌ ์นด๋“œ๋ฅผ ๋ฐ›์„ ํ”Œ๋ ˆ์ด์–ด ๋ฒˆํ˜ธ๊ฐ€ n๊ณผ ๊ฐ™๋‹ค๋ฉด Bessie์ด๋ฏ€๋กœ ArrayList์— ์นด๋“œ ๋ฒˆํ˜ธ ์ €์žฅ

3) Queue๊ฐ€ ๋น„์—ˆ๋‹ค๋ฉด ์ข…๋ฃŒ

4) p๊ฐœ๋งŒํผ ์นด๋“œ๋ฅผ Queue์—์„œ poll ํ•œ ํ›„ ๋‹ค์‹œ ์ €์žฅ

5) ๋‹ค์Œ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์œ„ํ•ด idx+1

 

ArrayList๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ ํ›„ ์ถœ๋ ฅํ•œ๋‹ค.   



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 15832_Aku Negaraku  (0) 2025.09.10
[Baekjoon] 17857_Musical Chairs  (0) 2025.09.09
[Baekjoon] 14783_Eenie Meenie Miney Moe  (1) 2025.08.29
[Baekjoon] 27042_Bonbons  (1) 2025.08.28
[Baekjoon] 5938_Daisy Chains in the Field  (2) 2025.08.25