๋ฌธ์ (์ถ์ฒ: 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 |