[Java][백준] #28279 - 덱 2

배수연·2024년 7월 4일

algorithm

목록 보기
38/45

🔗 백준 28279 - 덱 2

문제

알고리즘 분류

  • 자료 구조

IDEA

  • 앞뒤로 입출력이 발생하므로 이름처럼 덱을 사용해 풀어야 한다.

풀이

1. 덱 선언 및 입력

  • LinkedList로 덱을 선언하고, 명령어 1~8 (command)를 입력받는다. 정수가 있을 경우 정수 x(num)을 함께 입력받는다.
        Deque<Integer> q = new LinkedList<>();

        int n = Integer.parseInt(br.readLine());
        for(int i = 0; i<n; i++){
            st = new StringTokenizer(br.readLine());
            String command = st.nextToken();
            int num = 0;
            if (st.hasMoreTokens()) {
                num = Integer.parseInt(st.nextToken());
            }
			...
        }

2. 명령문에 따른 조건문

        if (command.equals("1")){
                q.addFirst(num);
            } else if (command.equals("2")){
                q.addLast(num);
            } else if (command.equals("3")){
                if (q.isEmpty())
                    sb.append(-1).append("\n");
                else sb.append(q.removeFirst()).append("\n");
            } else if (command.equals("4")){
                if (q.isEmpty())
                    sb.append(-1).append("\n");
                else sb.append(q.removeLast()).append("\n");
            } else if (command.equals("5")){
                sb.append(q.size()).append("\n");
            } else if (command.equals("6")){
                if (q.isEmpty()) sb.append(1).append("\n");
                else sb.append(0).append("\n");
            } else if (command.equals("7")){
                if (q.isEmpty()) sb.append(-1).append("\n");
                else sb.append(q.peekFirst()).append("\n");
            } else {
                if (q.isEmpty()) sb.append(-1).append("\n");
                else sb.append(q.peekLast()).append("\n");
            }

전체 코드

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 Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();
        Deque<Integer> q = new LinkedList<>();

        int n = Integer.parseInt(br.readLine());
        for(int i = 0; i<n; i++){
            st = new StringTokenizer(br.readLine());
            String command = st.nextToken();
            int num = 0;
            if (st.hasMoreTokens()) {
                num = Integer.parseInt(st.nextToken());
            }
            if (command.equals("1")){
                q.addFirst(num);
            } else if (command.equals("2")){
                q.addLast(num);
            } else if (command.equals("3")){
                if (q.isEmpty())
                    sb.append(-1).append("\n");
                else sb.append(q.removeFirst()).append("\n");
            } else if (command.equals("4")){
                if (q.isEmpty())
                    sb.append(-1).append("\n");
                else sb.append(q.removeLast()).append("\n");
            } else if (command.equals("5")){
                sb.append(q.size()).append("\n");
            } else if (command.equals("6")){
                if (q.isEmpty()) sb.append(1).append("\n");
                else sb.append(0).append("\n");
            } else if (command.equals("7")){
                if (q.isEmpty()) sb.append(-1).append("\n");
                else sb.append(q.peekFirst()).append("\n");
            } else {
                if (q.isEmpty()) sb.append(-1).append("\n");
                else sb.append(q.peekLast()).append("\n");
            }
        }
        System.out.println(sb);
    }
}

0개의 댓글