1406번 에디터 문제와 굉장히 유사해서 빠르게 풀 수 있었다.
입력되는 문자열을 char타입 배열에 문자를 하나씩 저장하고, 차례대로 확인하며 문제에서 요구하는 동작을 하도록 구현하였다. stack을 두 개 사용해서 왼쪽의 스택과 오른쪽의 스택 사이에 커서가 존재하는 것처럼 구현을 하니 쉽게 풀 수 있었다.
package BOJ;
import java.io.*;
import java.util.Stack;
public class sol5397 {
static int T;
static Stack<Character> left;
static Stack<Character> right;
static String init;
static char[] log;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
init = br.readLine();
log = init.toCharArray();
left = new Stack<>();
right = new Stack<>();
for (char c : log) {
switch (c) {
case '<':
if (!left.isEmpty()) {
right.push(left.pop());
}
break;
case '>':
if (!right.isEmpty()) {
left.push(right.pop());
}
break;
case '-':
if (!left.isEmpty()) {
left.pop();
}
break;
default:
left.push(c);
break;
}
}
while (!left.isEmpty()) {
right.push(left.pop());
}
while (!right.isEmpty()) {
bw.write(right.pop());
}
if (i != T - 1) {
bw.write("\n");
}
}
bw.flush();
bw.close();
}
}