[백준/Java] 10866번 : 덱

김하밍·2023년 11월 3일

알고리즘

목록 보기
9/22
  1. 문제

  2. 접근 방식
    (1) 덱 으로 구현한다.
    (2) 명령의 수 N을 입력받는다.
    (3) N번 반복하며 다음을 수행한다.
    - 명령을 입력 받는다.
    - 명령의 첫 단어로부터 명령어를 추출한다.
    - switch문을 사용하여 명령어에 따라 메서드들을 수행시킨다.

  3. 제출한 코드

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

public class Main {
	public satic void main(String[]
 args) throws IOException {
 	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int N = Integer.parseInt(br.readLine());
    StringBuilder sb = new StringBuilder();
    Deque<Integer> deq = new ArrayDeque<>();
    
    for (int i = 0; i < N; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            String S = st.nextToken();

            switch (S) {
                case "push_front" :
                    deq.addFirst(Integer.parseInt(st.nextToken()));
                    break;
                case "push_back" :
                    deq.addLast(Integer.parseInt(st.nextToken()));
                    break;
                case "pop_front" :
                    if (deq.isEmpty()) sb.append(-1 + "\n");
                    else sb.append(deq.pollFirst() + "\n");
                    break;
                case "pop_back" :
                    if (deq.isEmpty()) sb.append(-1 + "\n");
                    else sb.append(deq.pollLast() + "\n");
                    break;
                case "size" :
                    sb.append(deq.size() + "\n");
                    break;
                case "empty" :
                    if (deq.isEmpty()) sb.append(1 + "\n");
                    else sb.append(0 + "\n");
                    break;
                case "front" :
                    if (deq.isEmpty()) sb.append(-1 + "\n");
                    else sb.append(deq.peekFirst() + "\n");
                    break;
                case "back" :
                    if (deq.isEmpty()) sb.append(-1 + "\n");
                    else sb.append(deq.peekLast() + "\n");
                    break;
            }
        }
        System.out.println(sb);
    }
}
profile
나만의 언어로 기록하며 성장하기 !

0개의 댓글