백준 1406 (에디터) - Java

more·2023년 9월 25일
import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        LinkedList<String> res = new LinkedList<>();

        String input = br.readLine();

        for (int i = 0; i < input.length(); i++) res.add(String.valueOf(input.charAt(i)));
		// 해당 부분을 그냥 int로 해서 index를 표시하려고 하였으나 시간초과
        // 검색해본 결과 iterator를 사용하는 것을 추천
        ListIterator<String> iter = res.listIterator();
		// 커서를 iterator의 마지막부분으로 옮기도록
        while(iter.hasNext()) {
            iter.next();
        }

        int testCase = Integer.parseInt(br.readLine());

        for (int i = 0; i < testCase; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            String command = st.nextToken();
            if (command.equals("P")) {
                iter.add(st.nextToken());
            }
            else if (command.equals("L")) {
                if(iter.hasPrevious())  iter.previous();
            }
            else if (command.equals("D")) {
                if (iter.hasNext())    iter.next();
            }
            else if (command.equals("B")) {
                if(iter.hasPrevious()) {
                    iter.previous();
                    iter.remove();
                }
            }
        }

        for (String data : res) {
            bw.write(data);
        }

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

}

0개의 댓글