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()); } }
|