[알고리즘]/백준

백준 1406 자바 - 에디터

broship 2021. 6. 15. 09:00

문제


 

 

 

문제해결


import java.io.*;
import java.util.Stack;
public class B1406 {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String str = reader.readLine();
        int n = Integer.parseInt(reader.readLine());

        Stack<String> left = new Stack<>();
        Stack<String> right = new Stack<>();

        String[] arr = str.split("");
        for (String s : arr) {
            left.push(s);
        }

        for (int i = 0; i < n; i++) {
            String command = reader.readLine();
            char c1 = command.charAt(0);
            switch (c1){
                case 'L':
                    if (!left.empty()) right.push(left.pop());
                    break;
                case 'D':
                    if (!right.empty()) left.push(right.pop());
                    break;
                case 'B':
                    if (!left.empty()) left.pop();
                    break;
                case 'P':
                    char c2 = command.charAt(2);
                    left.push(String.valueOf(c2));
                    break;
            }
        }

        int size = right.size();
        for (int i = 0; i < size; i++) {
            left.push(right.pop());
        }
        for (String c : left) {
            bw.write(c);
        }
        bw.flush();
        bw.close();
    }
}

- left, right 스텍을 만들어서 커서 왼쪽에 있으면 left 스텍에, 커서 오른쪽에 있으면 right 스텍에 담는 식으로 구현하였다

- 명령어에 맞게 이동, 삭제 등을 처리하면 된다

- 처음에는 scanner, sout으로 구현하였으나 시간 초과 나서 BufferedReader, BufferedWriter로 바꾸니 시간 초과가 해결되었다

'[알고리즘] > 백준' 카테고리의 다른 글

백준 1158 자바 - 요세푸스 문제  (0) 2021.06.17
백준 10845 자바 - 큐  (0) 2021.06.16
백준 1874 자바 - 스택 수열  (0) 2021.06.14
백준 9012 자바 - 괄호  (0) 2021.06.13
백준 10828 자바 - 스택  (0) 2021.06.12