๐Algorithm/๐ฅBaekjoon
[Baekjoon] 27497_์ํ๋ฒณ ๋ธ๋ก
๋ฟ์ผ._.
2023. 11. 24. 15:47
๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/27497)
< ์ํ๋ฒณ ๋ธ๋ก >
๋ฌธ์ ํ์ด
deque์ stack์ ์ฌ์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. deque์๋ ๋ฌธ์์ด์ ๋ฃ๊ณ , 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.ArrayDeque;
import java.util.Deque;
import java.util.Stack;
import java.util.StringTokenizer;
public class _27497_ { // ์ํ๋ฒณ ๋ธ๋ก
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 n = Integer.parseInt(bf.readLine());
Deque<Character> deque = new ArrayDeque<>();
Stack<Boolean> stack = new Stack<>();
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
int cmd = Integer.parseInt(st.nextToken());
if (cmd == 1 || cmd == 2) {
char x = st.nextToken().charAt(0);
if (cmd == 1) {
stack.add(false);
deque.addLast(x);
} else {
stack.add(true);
deque.addFirst(x);
}
} else {
if (deque.isEmpty()) {
continue;
}
boolean flag = stack.pop();
if (flag) {
deque.removeFirst();
} else {
deque.removeLast();
}
}
}
if (deque.isEmpty()) {
bw.write("0");
} else {
while (!deque.isEmpty()) {
bw.write(deque.pollFirst());
}
}
bw.flush();
}
}
๋ณ์)
n : ๋ฒํผ์ ๋๋ฅธ ํ์
deque : ๋ฌธ์์ด ๊ตฌ์ฑํ๋ ๋ธ๋ก ์ ์ฅ
stack : ๋ฌธ์์ด์ ์์ ์ถ๊ฐํ๋์ง ๋ค์ ์ถ๊ฐํ๋์ง ์ ์ฅ
cmd : 1(๋ฌธ์์ด ๋งจ ๋ค์ ์ถ๊ฐ), 2(๋ฌธ์์ด ๋งจ ์์ ์ถ๊ฐ), 3 (๊ฐ์ฅ ๋์ค์ ์ถ๊ฐ๋ ๋ธ๋ก ์ ๊ฑฐ)
x : ๋ฌธ์์ด
1์ ์ ๋ ฅ๋ฐ์ ๊ฒฝ์ฐ deque์ addLast๋ฅผ ์ฌ์ฉํ์ฌ ๋งจ ๋ค์ ์ถ๊ฐํ๊ณ , 2๋ฅผ ์ ๋ ฅ๋ฐ์ ๊ฒฝ์ฐ deque์ addFirst๋ฅผ ์ฌ์ฉํ์ฌ ๋งจ ์์ ์ถ๊ฐํ๋ค. 3์ ์ ๋ ฅ๋ฐ์ ๊ฒฝ์ฐ stack์์ ๊ฐ์ ํ๋ ๊บผ๋ด์ ๊ฐ์ด false๋ผ๋ฉด removeLast๋ฅผ ์ฌ์ฉํ์ฌ ๋งจ ๋ค ๊ฐ์ ์ ๊ฑฐํ๊ณ , true๋ผ๋ฉด removeFirst๋ฅผ ์ฌ์ฉํ์ฌ ๋งจ ์์ ๊ฐ์ ์ ๊ฑฐํ๋ค.
์ต์ข deque๊ฐ ๋น์๋ค๋ฉด 0์ ์ถ๋ ฅํ๊ณ ๋น์ด์์ง ์๋ค๋ฉด deque์์ ๊ฐ์ ํ๋์ฉ ๊บผ๋ด ์ถ๋ ฅํ๋ค.