Computer Science (CS)/알고리즘

[백준/Java] 10845번 큐

eune7 2024. 11. 18. 00:28
728x90
반응형

 

 

 

 

 

 

문제

 

 

 

정답

import java.io.*;
import java.util.*;

public class Main {
    static Queue<Integer> resultQueue = new LinkedList<>();
    static int lastNum;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int N = Integer.parseInt(br.readLine());

        for(int i = 0 ; i < N; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            String inputStr = st.nextToken();

            if(inputStr.equals("push")) {
                lastNum = Integer.parseInt(st.nextToken());
                push(lastNum);
            } else if(inputStr.equals("pop")) {
                sb.append(pop()).append("\n");
            } else if(inputStr.equals("size")) {
                sb.append(size()).append("\n");
            } else if(inputStr.equals("empty")) {
                sb.append(empty()).append("\n");
            } else if(inputStr.equals("front")) {
                sb.append(front()).append("\n");
            } else if(inputStr.equals("back")) {
                sb.append(back(lastNum)).append("\n");
            }
        }

        System.out.print(sb);
    }

    static void push(int num) {
        resultQueue.add(num);
    }

    static int pop() {
        if(resultQueue.isEmpty()) {
            return -1;
        } else {
            return resultQueue.remove();
        }
    }

    static int size(){
        return resultQueue.size();
    }

    static int empty(){
        if(resultQueue.isEmpty()) {
            return 1;
        } else {
            return 0;
        }
    }

    static int front(){
        if(resultQueue.isEmpty()) {
            return -1;
        } else {
            return resultQueue.peek();
        }
    }

    static int back(int num){
        if(resultQueue.isEmpty()) {
            return -1;
        } else {
            return num;
        }
    }
}

input값에 따라 if문으로 나누어주고

각각 실행해야 할 로직들은 메소드로 따로 빼주었습니다

 

구글링해보니까 switch문을 사용한 경우, 따로 메소드 안 빼준 경우가 보였었는데

사내 리팩토링 스터디에서 switch문이 그렇게 좋은 방법은 아니다고 했던 거 같기도 하고

메소드의 경우 별도로 빼주는 게 더 보기 좋지 않을까 했습니다.

 

해당 문제를 통해 Queue 관련 메소드는 정복한 듯 하네요ㅎㅎ

 

 

 

728x90
반응형