# 유형 : 시뮬레이션, 스택

# 맨 처음에는 리스트 사용했는데, 시간초과가 나서 예전에 비슷한 경우의 문제를 해결했던 스택을 사용하였음. bufferWriter 또는 StringBuilder, StringBuffer 클래스를 사용해야 한다. System.out.print로 접근하면 시간초과 발생.

그리고 리스트 문자열의 중간의 문자를 지우거나 중간에 문자를 삽입하는 것은 그 뒤의 문자들을 전부 한 칸씩 당겨오거나 전부 한 칸씩 밀어내게 되므로 길이에 비례하는 시간이 걸리기 때문에 리스트를 사용하면 시간초과가 발생하는거 같다.

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
package bj;
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Stack;
 
public class p5397 {
    static LinkedList<Character> ll;
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int testCases = Integer.parseInt(br.readLine());
        for(int tc=0; tc<testCases; tc++) {
            Stack<Character> st1 = new Stack<>();
            Stack<Character> st2 = new Stack<>();
            
            String str = br.readLine();
            for(int i=0; i<str.length(); i++) {
                if(str.charAt(i)=='<') {
                    if(!st1.isEmpty())
                        st2.push(st1.pop());
                }else if(str.charAt(i)=='>') {
                    if(!st2.isEmpty())
                        st1.push(st2.pop());
                }else if(str.charAt(i)=='-') {
                    if(!st1.isEmpty())
                        st1.pop();
                }else {
                    st1.push(str.charAt(i));
                }
            }
            
            while(!st2.isEmpty())
                st1.push(st2.pop());
            
            StringBuilder sb = new StringBuilder();
            while(!st1.isEmpty())
                sb.append(st1.pop());
            System.out.println(sb.reverse());
        }
    }
}
 
cs

+ Recent posts