BOJ_1406_에디터_java

2022. 12. 27. 10:20Algorithm/BOJ

728x90

BOJ_1406_에디터

import java.io.*;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.StringTokenizer;

/**
 백준 1406번 에디터
 실버 2
 */
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));
        StringTokenizer st = new StringTokenizer(br.readLine());

        // linkedList 사용
        List<Character> strList = new LinkedList();

        // char 배열로 입력 문자열 받기
        char[] str = st.nextToken().toCharArray();

        // linkedList에 값 입력
        int N = str.length;
        for(int i = 0; i<N;i++){
            strList.add(str[i]);
        }

        // cursor 위치를 int로 사용시 시간초과 (위치를 찾는 시간이 걸림) -> ListIterator 사용
        ListIterator<Character> iter = strList.listIterator();
        while (iter.hasNext()) {
            iter.next();
        }

        // 명령어 입력
        st = new StringTokenizer(br.readLine());
        int M = Integer.parseInt(st.nextToken());

        for(int i = 0; i<M; i++) {
            st = new StringTokenizer(br.readLine());
            char ch = st.nextToken().charAt(0);
            switch (ch){
                case 'P' :
                    char letter = st.nextToken().charAt(0);
                    iter.add(letter);
                    break;
                case 'L' :
                    if (iter.hasPrevious()){
                        iter.previous();
                    }
                    break;
                case 'D':
                    if(iter.hasNext()){
                        iter.next();
                    }
                    break;
                case 'B':
                    if(iter.hasPrevious()){
                        iter.previous();
                        iter.remove();
                    }
                    break;
                default:
                    break;
            }
        }

        for (Character ansCh : strList){
            bw.write(ansCh);
        }
        bw.flush();
        bw.close();
    }

}

'Algorithm > BOJ' 카테고리의 다른 글

BOJ_12852_1로 만들기 2_java  (0) 2023.01.10
BOJ_14938_서강그라운드_java  (0) 2023.01.09
BOJ_13172_Σ_java  (0) 2023.01.06
BOJ_2448_별 찍기 11_java  (0) 2022.12.28
BOJ_2193_이친수_java  (0) 2022.12.22