์ด ๋ฌธ์ ๋, ์คํ์ผ๋ก ํด๊ฒฐํ์๋ค.
์๊ฐ ์ ํ์ด ๊น๋ค๋กญ๊ธฐ ๋๋ฌธ์, ์คํ์ ์ฌ์ฉํ์๊ณ
์คํ์ ์ฌ์ฉํ์ด๋, ๋ง์ง๋ง์ ์ถ๋ ฅํ๋ ๊ณผ์ ์์ println์ ์ฌ์ฉํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค.
๋ฐ๋ผ์ BufferedReader ์ BufferedWriter๋ฅผ ์ฌ์ฉํ๋ค.
์ด ๋ฌธ์ ๊ฐ ์๊ตฌํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด์๋ 2๊ฐ์ ์คํ์ด ํ์ํ๋ค.
์ปค์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์๋ ์คํ๊ณผ ์ค๋ฅธ์ชฝ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์๋ ์คํ๋ก ์ฌ์ฉํ ๊ฒ์ด๋ค.
์คํ์ ๊ฒฝ์ฐ, ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ด์ฆ๊ฐ ๊ณ ์ ๋์ด ์๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ํ์ฉํ๊ธฐ ๋งค์ฐ ํธํ๋ค!!
dmih
11
B
B
P x
L
B
B
B
P y
D
D
P z
์์ ์ฒ๋ผ, ์ ๋ ฅํด๋ณด๋ฉฐ ์๋ฆฌ๋ฅผ ํ์ ํด๋ณด๊ฒ ๋ค.
๋จผ์ , ์ด๊ธฐ๊ฐ์ผ๋ก dmih ๊ฐ ์ ๋ ฅ๋๋ฏ๋ก ์๋ํฐ ๋ชจ์ต์ ์ค๋ฅธ์ชฝ๊ณผ ๊ฐ๊ณ
์ปค์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ์คํ์๋ ์์ ๊ฐ์ด ์ ๋ ฅ์ ํด์ผํ ๊ฒ์ด๋ค.
B๋ ์ปค์์ ์ผ์ชฝ ๋ฌธ์๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด๋ฏ๋ก
์ผ์ชฝ ์คํ์ pop ํ๋ฉด ๋ ๊ฒ์ด๋ค.
B ๋ช ๋ น์ ๋๋ฒํ์ผ๋ฏ๋ก ์์ ๊ฐ์ ์ํ๊ฐ ๋๋ค.
P x ๋ฅผ ํ์ผ๋ฏ๋ก ์ผ์ชฝ ์คํ์ push ๋ฅผ ํด์ฃผ๋ฉด ๋๋ค.
L ๋ช ๋ น์ด๋ ์ปค์๋ฅผ ์ผ์ชฝ์ผ๋ก ์ฎ๊ธฐ๋ ๋ช ๋ น์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ผ์ชฝ ์คํ์ pop ํ๋ค์์ ์ค๋ฅธ์ชฝ ์คํ์ push ํ๋ฉด ๋๋ค.
๋ฐ์ดํฐ๊ฐ ๋น์ด์๋ ๊ฒฝ์ฐ pop์ ์คํํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ isEmpty๋ก ์ฒดํฌ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค.
B ๋ช ๋ น์ด๋ ์ ๋ ฅ๋ ๋๋ง๋ค ์ผ์ชฝ ์คํ์ pop ํด์ฃผ๋ฉด ๋๋ค.
๋ค๋ง, ์ผ์ชฝ ์คํ์ด ์ด๋ฏธ ๋น์ด์ ธ ์๋ ๊ฒฝ์ฐ ์ญ์, pop์ ์คํํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ isEmpty๋ก ์ฒดํฌ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค.
P y ๋ช ๋ น์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ผ์ชฝ ์คํ์ y๋ฅผ push ํด์ฃผ๋ฉด ๋๋ค.
D์ ๊ฒฝ์ฐ ์ปค์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ธ๋ฐ, ์ด ๊ฒฝ์ฐ๋ ์ค๋ฅธ์ชฝ ์คํ์ popํด์ฃผ๋ฉด์ popํ ๋ฐ์ดํฐ๋ฅผ ์ผ์ชฝ ์คํ์ pushํด์ฃผ๋ฉด ๋๋ค.
์ด ๊ฒฝ์ฐ ์ญ์, ๋ฐ์ดํฐ๊ฐ ๋น์ด์๋ ๊ฒฝ์ฐ pop์ ์คํํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ isEmpty๋ก ์ฒดํฌ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค.
๋ง์ง๋ง P z ๋ ์ผ์ชฝ ์คํ์ push๋ฅผ ํด์ฃผ๋ฉด ๋๋ค.
์ต์ข ๊ฒฐ๊ณผ๋ฌผ์ yxz ๊ฐ ๋ ๊ฒ์ด๋ค.
์ถ๋ ฅํ๋ ๊ณผ์ ์์๋ ์คํ์ LIFO(ํ์ ์ ์ถ) ์ด๊ธฐ ๋๋ฌธ์, ์ผ์ชฝ ์คํ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ pop ํด์ค ํ ์ค๋ฅธ์ชฝ ์คํ์ push ํ๋ฉด,
์ต์ข ์ ์ผ๋ก ์์ ๊ฐ์ ๋ชจ์ต์ด ๋๊ณ , ์ค๋ฅธ์ชฝ ์คํ์ ๋ชจ๋ pop ํ๋ฉด, ์ํ๋ [yxz] ๋ฅผ ์ถ๋ ฅํ ์ ์๋ค.
import java.io.*;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
Stack<Character> lstack = new Stack<>();
Stack<Character> rstack = new Stack<>();
//Stack ํ์
์ String์ผ๋ก ํด๋ ๋๋ค.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String initialInput = br.readLine();
for (int i = 0; i < initialInput.length(); i++) {
lstack.push(initialInput.charAt(i));
}
int N = Integer.valueOf(br.readLine());
for (int i = 1; i <= N; i++) {
String[] input = br.readLine().split(" ");
if (input[0].equals("L")) {
if (!lstack.isEmpty())
rstack.push(lstack.pop());
} else if (input[0].equals("D")) {
if (!rstack.isEmpty()) {
lstack.push(rstack.pop());
}
} else if (input[0].equals("B")) {
if (!lstack.isEmpty()) {
lstack.pop();
}
} else if (input[0].equals("P")) {
lstack.push(input[1].charAt(0));
}
}
while (!lstack.isEmpty()) {
rstack.push(lstack.pop());
}
while (!rstack.isEmpty()) {
bw.write(rstack.pop());
}
bw.flush();
bw.close();
}
}