import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String str = br.readLine();
Stack<Character> stack1 = new Stack<>();
Stack<Character> stack2 = new Stack<>();
for (char x : str.toCharArray()) {
stack1.push(x);
}
int m = Integer.parseInt(br.readLine());
while (m-- > 0) {
StringTokenizer st = new StringTokenizer(br.readLine());
String cmd = st.nextToken();
switch (cmd) {
case "L": // 왼쪽 pop한 값을 오른쪽에 push
if (stack1.isEmpty())
continue;
stack2.push(stack1.pop());
break;
case "D": // 오른쪽 pop한 값을 왼쪽에 push
if (stack2.isEmpty())
continue;
stack1.push(stack2.pop());
break;
case "B": // 왼쪽 pop
if (stack1.isEmpty())
continue;
stack1.pop();
break;
case "P": // 왼쪽에 문자를 push
stack1.push(st.nextToken().charAt(0));
break;
}
}
while(!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
while(!stack2.isEmpty()){
sb.append(stack2.pop());
}
System.out.println(sb);
}
}
기존 문자들을 스택1에 넣고 커서를 기준으로 커서의 왼쪽을 스택2에 넣는다.
마지막에 스택1에 남아있는 문자들을 스택2로 넣어 pop해 출력한다.
이때 system.out.println을 쓰니 시간초과가 나서 StringBuilder을 사용했더니 통과하였다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 10820번- 문자열 분석 (0) | 2022.10.09 |
---|---|
[JAVA] 백준 17298번- 오큰수 (0) | 2022.10.09 |
[JAVA] 백준 10866번- 덱 (0) | 2022.10.05 |
[JAVA] 백준 10845번- 큐 (0) | 2022.10.05 |
[JAVA] 백준 9093번- 단어 뒤집기 (0) | 2022.10.04 |