๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 11254_Hydraulic Arm

๋ฟŒ์•ผ._. 2025. 11. 17. 12:08
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/11254)

< Hydraulic Arm >

 

๋ฌธ์ œ ํ’€์ด 

 

์˜ˆ์ œ๋ฅผ ๋ดค์„ ๋•Œ ๋ฌธ์ œ์—์„œ ๋งํ•œ "left to right"๊ฐ€ ์•„๋‹Œ "right to left"์ธ ๊ฒƒ ๊ฐ™์•„ "right to left"๋กœ ์ƒ๊ฐํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

Queue 1๊ฐœ์™€ Stack 1๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

 

* Queue : ์ž…๋ ฅ๊ฐ’

* Stack :  shelf

 

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

public class _11254_ { // Hydraulic Arm

	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;

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

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

			int cnt = 1;
			Stack<Integer> shelf = new Stack<>();
			Queue<Integer> belt = new LinkedList<>();

			st = new StringTokenizer(bf.readLine());
			for (int j = 0; j < n; j++) {
				belt.add(Integer.parseInt(st.nextToken()));
			}

			boolean flag = false;
			while (cnt <= n) {
				if (!belt.isEmpty() && belt.peek() == cnt) {
					belt.poll();
					cnt += 1;
				} else if (!shelf.isEmpty() && shelf.peek() == cnt) {
					shelf.pop();
					cnt += 1;
				} else {
					if (!belt.isEmpty()) {
						shelf.add(belt.poll());
					} else {
						flag = true;
						break;
					}
				}
			}
			if (flag) {
				bw.write("no\n");
			} else {
				bw.write("yes\n");
			}
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
t : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜
n : egg packages ๊ฐœ์ˆ˜
cnt : ํ˜„์žฌ ๋ฒˆํ˜ธ
shelf : ์„ ๋ฐ˜์— ์žˆ๋Š” ๊ฐ’
belt : ์™ผ์ชฝ ๋ฒจํŠธ์— ์žˆ๋Š” ๊ฐ’
flag : ์กฐ๊ฑด ์ถฉ์กฑ ์—ฌ๋ถ€ 

 

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

 

1) egg packages ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

2) egg packeges ๊ฐœ์ˆ˜๋งŒํผ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›์•„ Queue์— ์ €์žฅํ•œ๋‹ค.

3) cnt๋ฅผ 1๋กœ ์ดˆ๊ธฐํ™”ํ•œ ํ›„ cnt๊ฐ€ n์ดํ•˜์ผ ๋•Œ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

3-1) belt์˜ peek ๊ฐ’์ด cnt์™€ ๊ฐ™๋‹ค๋ฉด pollํ›„ cnt+1

3-2) shelf์˜ peek ๊ฐ’์ด cnt์™€ ๊ฐ™๋‹ค๋ฉด popํ›„ cnt+1

3-3) belt์— ์•„์ง ๊ฐ’์ด ์žˆ๋‹ค๋ฉด shelf์— belt ๊ฐ’ ์ถ”๊ฐ€

3-4) ๋ชจ๋“  ์กฐ๊ฑด์— ๋งž์ง€ ์•Š๋‹ค๋ฉด ์กฐ๊ฑด์— ์ถฉ์กฑํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ข…๋ฃŒ

4) ์ตœ์ข… flag ๊ฐ’์— ๋”ฐ๋ผ ๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค.



 

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

[Baekjoon] 5006_Horror List  (0) 2025.11.19
[Baekjoon] 26111_Parentheses Tree  (0) 2025.11.18
[Baekjoon] 5957_Cleaning the Dishes  (0) 2025.11.14
[Baekjoon] 14540_Railway Station  (0) 2025.11.12
[Baekjoon] 4992_Hanafuda Shuffle  (0) 2025.11.10