boj)1406 - 에디터

2020. 9. 14. 01:31PS/boj

import java.io.*;
import java.util.Stack;

public class boj_1406 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Stack<Character> left = new Stack<>();
        Stack<Character> right = new Stack<>();

        String first = br.readLine();
        int m = Integer.parseInt(br.readLine());

        for (int i = 0; i < first.length(); i++) {
            left.push(first.charAt(i));
        }

        for (int i = 0; i < m; i++) {
            String command = br.readLine();

            switch (command.charAt(0)) {
                case 'L' :
                    if (!left.isEmpty()) {
                        right.push(left.pop());
                    }
                    break;
                case 'D' :
                    if (!right.isEmpty()) {
                        left.push(right.pop());
                    }
                    break;
                case 'B' :
                    if (!left.isEmpty()) {
                        left.pop();
                    }
                    break;
                case 'P' :
                    left.push(command.charAt(2));
            }
        }

        while (!left.isEmpty()) {
            right.push(left.pop());
        }

        while (!right.isEmpty()) {
            bw.append(right.pop());
        }

        bw.flush();
        bw.close();
    }
}

- 해결해 볼만했던거 같은데 switch case에서 break 를 빼먹어서 계속 오류에 걸리고 포기함

- 처음 접근은 스택 생각 못하고 StringBuilder 나 LinkedList 생각함

- 문자열이고 N 이 너무 커서 시간복잡도 생각이 필요함

 

 

- 커서를 기준으로 스택을 두개 나눈다고 생각하면 풀이가 쉬워진다

- 출력할때는 왼쪽 스택을 전부 오른쪽 스택으로 옮겨담고 오른쪽 스택에서 전부 출력하면 순서대로 출력 가능

'PS > boj' 카테고리의 다른 글

boj)17413 - 단어 뒤집기 2  (0) 2020.09.14
boj)1158 - 요세푸스 문제  (0) 2020.09.14
boj)1874 - 스택 수열  (0) 2020.09.13
boj)9012 - 괄호  (0) 2020.09.13
boj)9093 - 단어 뒤집기  (0) 2020.09.13