๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 10106_The Geneva Confection

๋ฟŒ์•ผ._. 2025. 11. 6. 00:18
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/10106)

< The Geneva Confection >

 

๋ฌธ์ œ ํ’€์ด 

 

Stack ๋‘ ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ lake์™€ branch์— ์ ์ ˆํžˆ ์ด๋™์‹œ์ผœ ์ˆœ์„œ๋Œ€๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ๊ตฌํ•œ๋‹ค.

 

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;

public class _10106_ { // The Geneva Confection

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int t = Integer.parseInt(bf.readLine());

		for (int i = 0; i < t; i++) {
			int n = Integer.parseInt(bf.readLine());

			Stack<Integer> lake = new Stack<>();
			Stack<Integer> branch = new Stack<>();
			int cnt = 1;

			for (int j = 0; j < n; j++) {
				lake.add(Integer.parseInt(bf.readLine()));
			}

			boolean flag = false;
			while (!lake.isEmpty() || !branch.isEmpty()) {
				if (!branch.isEmpty() && branch.peek() == cnt) {
					branch.pop();
					cnt++;
				} else if (!lake.isEmpty() && lake.peek() == cnt) {
					lake.pop();
					cnt++;
				} else {
					if(lake.isEmpty()) {
						flag=true;
						break;
					}
					branch.add(lake.pop());
				}
			}
			
			if(flag) {
				bw.write("N\n");
			}else {
				bw.write("Y\n");
			}
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
t : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜
n : ๊ธฐ์ฐจ ์นธ ์ˆ˜
lake, branch : Stack <Integer>
cnt : ํ˜„์žฌ ์ˆœ์„œ

 

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜๋งŒํผ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) ๊ธฐ์ฐจ ์นธ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

2) ๊ธฐ์ฐจ ์นธ ์ˆ˜๋งŒํผ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ lake์— ์ €์žฅํ•œ๋‹ค.

3) lake์— ๊ฐ’์ด ์žˆ๊ฑฐ๋‚˜ branch์— ๊ฐ’์ด ์žˆ์„ ๋•Œ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

3-1) branch์˜ peek ๊ฐ’์ด cnt์™€ ์ผ์น˜ํ•œ๋‹ค๋ฉด pop, cnt+1

3-2) lake์˜ peek ๊ฐ’์ด cnt์™€ ์ผ์น˜ํ•œ๋‹ค๋ฉด pop, cnt+1

3-3) ๋‘˜ ๋‹ค ์ผ์น˜ํ•˜์ง€ ์•Š๊ณ  lake๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด ์ˆœ์„œ๋Œ€๋กœ ์™„์„ฑํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ข…๋ฃŒ, lake๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด lake์˜ pop ํ•œ ๊ฐ’์„ branch์— ์ €์žฅ. 

4) flag๊ฐ€ true๋ผ๋ฉด N ์ถœ๋ ฅ, false๋ผ๋ฉด Y ์ถœ๋ ฅ



 

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

[Baekjoon] 3277_DOMAINS  (0) 2025.11.07
[Baekjoon] 6379_Scramble Sort  (0) 2025.11.05
[Baekjoon] 29882_Ranking  (0) 2025.11.04
[Baekjoon] 21149_Unread Messages  (0) 2025.11.03
[Baekjoon] 5741_Soccer League  (0) 2025.10.31