0%

[백준/1406] 에디터

Baekjoon Online Judge - 1406

Review

  • 스택 2개로 풀었다.
  • L: stackA -> stackB로 옮김
  • P: StackA.push()
  • B: StackA.Pop()
  • D: stackB -> StackA로 옮김
  • 요런 식으로 풀면 된다.
  • 아직 자바로 입출력 받고 문자열 처리하는 게 어렵다. 수련이 더 필요함.

Code (JAVA)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.util.*;
import java.io.*;

public class Main {
public static void main(String args[]) throws IOException {

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();

Stack<String> stackA = new Stack<String>();
Stack<String> stackB = new Stack<String>();

String word = bf.readLine();
int n = Integer.parseInt(bf.readLine());

for(int i = 0; i < word.length(); i++) {
stackA.push(word.charAt(i)+"");
}

while (n-->0) {
String[] input = bf.readLine().split(" ");
if(input[0].equals("L")) {
if(!stackA.empty()) {
stackB.push(stackA.pop());
}
} else if(input[0].equals("D")) {
if(!stackB.empty()) {
stackA.push(stackB.pop());
}
} else if(input[0].equals("B")) {
if(!stackA.empty()) {
stackA.pop();
}
} else if(input[0].equals("P")) {
stackA.push(input[1].charAt(0)+"");
}
}

while(!stackB.empty()) {
stackA.push(stackB.pop());
}

while(!stackA.empty()) {
sb.append(stackA.pop());
}

System.out.println(sb.reverse());
}
}