BAEK_5397_키로거
in Sidemenu / BaekJoon
5397. 키로거
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
static class Stack{
private int top;
private int maxSize;
private char[] stackArray;
public Stack(int maxSize){
this.maxSize = maxSize;
this.stackArray = new char[maxSize];
this.top = -1;
}
public boolean empty(){
return (top == -1);
}
public boolean full(){
return (top == maxSize-1);
}
public void push(char item){
if(full()) throw new ArrayIndexOutOfBoundsException((top+1)+">=" + maxSize);
stackArray[++top] = item;
}
public char peek(){
if(empty()) throw new ArrayIndexOutOfBoundsException(top);
return stackArray[top];
}
public char pop(){
char item = peek();
stackArray[top] = ' ';
top--;
return item;
}
public String toString() {
StringBuilder sb = new StringBuilder();
for(int i=0; i<top+1; i++) {
sb.append(stackArray[i]);
}
return sb.toString();
}
public String toRevString() {
StringBuilder sb = new StringBuilder();
for(int i=top; i>=0; i--) {
sb.append(stackArray[i]);
}
return sb.toString();
}
}
static int T, cursor, len;
static String input, ans;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb;
T = Integer.parseInt(br.readLine());
for(int tc=0; tc<T; tc++) {
int cursor = 0;
sb = new StringBuilder();
input = br.readLine();
len = input.length();
Stack stack1 = new Stack(len);
Stack stack2 = new Stack(len);
for(int i=0; i<len; i++) {
char ch = input.charAt(i);
switch (ch) {
case '>':
if(stack2.top==-1) {
continue;
}else {
stack1.push(stack2.pop());
}
break;
case '<':
if(stack1.top==-1) {
continue;
}else {
stack2.push(stack1.pop());
}
break;
case '-':
if(stack1.top==-1) {
continue;
}else {
stack1.pop();
}
break;
default:
stack1.push(ch);
break;
}
}
sb.append(stack1.toString());
sb.append(stack2.toRevString());
bw.write(sb.toString());
bw.write("\n");
}
bw.flush();
}
}