1일1알고/Java Algorithm

[23/09/10] B28279

kim chan jin 2023. 9. 10. 21:29

단순 구현이라면 시간초과이 관건인 문제인 것 같다.

객체를 많이 만들지 말고 StringBuilder 객체 하나만 만들어서 append 하는 식으로 시간을 절감해보자

 

package D1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;

public class B28279 {

    static Deque<Integer> deque = new LinkedList<>();
    static StringBuilder sb = new StringBuilder("");
    
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

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


        for (int i = 0; i < testCase; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            int firstToken = Integer.parseInt(st.nextToken());

            if(firstToken == 1) {
                Integer secondToken = Integer.parseInt(st.nextToken());
                _1X(secondToken);
            } else if(firstToken == 2) {
                Integer secondToken = Integer.parseInt(st.nextToken());
                _2X(secondToken);
            }
            else if (firstToken == 3) {
                sb.append(_3()).append("\n");
            }
            else if (firstToken == 4) {
                sb.append(_4()).append("\n");
            }
            else if (firstToken == 5) {
                sb.append(_5()).append("\n");
            }
            else if (firstToken == 6) {
                sb.append(_6()).append("\n");
            }
            else if (firstToken == 7) {
                sb.append(_7()).append("\n");
            }
            else if (firstToken == 8) {
                sb.append(_8()).append("\n");
            }
        }
        sb.deleteCharAt(sb.length()-1);
        System.out.print(sb);
    }

    private static void _1X(Integer x) {
        deque.addFirst(x);
    }

    private static void _2X(Integer x) {
        deque.addLast(x);
    }

    private static Integer _3() {
        if(!deque.isEmpty()) {
            return deque.pollFirst();
        }
        return -1;
    }

    private static Integer _4() {
        if(!deque.isEmpty()) {
            return deque.pollLast();
        }
        return -1;
    }
    
    private static Integer _5() {
        return deque.size();
    }

    private static Integer _6() {
        if(deque.isEmpty()) return 1;
        return 0;
    }

    private static Integer _7() {
        if(!deque.isEmpty()) {
            return deque.peekFirst();
        }
        return -1;
    }

    private static Integer _8() {
        if(!deque.isEmpty()) {
            return deque.peekLast();
        }
        return -1;
    }
}