ALGORITHM

[JAVA] 백준 1406번- 에디터

연듀 2022. 10. 7. 18:53
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