[java] 백준 - 큐 10845

동훈·2024년 4월 5일
post-thumbnail

업로드중..
자료구조 中 큐에 대해서 공부해보았다.

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        Queue<Integer> que = new LinkedList<>();
        int last = 0;
        int N = Integer.parseInt(br.readLine());
        for (int i = 0; i < N; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            String str = st.nextToken();
            switch (str){
                case "push":
                    last = Integer.parseInt(st.nextToken());
                    que.add(last);
                    break;
                case "pop":
                    if (que.isEmpty()){
                        sb.append(-1).append('\n');
                    }
                    else sb.append(que.poll()).append('\n');
                    break;
                case "size":
                    sb.append(que.size()).append('\n');
                    break;
                case "empty":
                    if (que.isEmpty()) sb.append(1).append('\n');
                    else sb.append(0).append('\n');
                    break;
                case "front":
                    if (que.isEmpty()){
                        sb.append(-1).append('\n');
                    }
                    else sb.append(que.peek()).append('\n');
                    break;
                case "back":
                    if (que.isEmpty()){
                        sb.append(-1).append('\n');
                    }
                    else sb.append(last).append('\n');
                    break;


            }
        }
        System.out.println(sb);
    }
}

직접 Queue 를 구현해보기도 했음 스택을 공부하고 나니까 훨씬 이해가 쉬워지는 느낌
first 값 last 값 만 기억하면 쉬웠던거 같다.

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

public class Main {
    public static int[] queue = new int[10001];
    public static int first = 0;
    public static int last = 0;

    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 str = st.nextToken();
            switch (str) {
                case "push":
                    push(Integer.parseInt(st.nextToken()));
                    break;
                case "pop":
                    sb.append(pop()).append('\n');
                    break;
                case "size":
                    sb.append(size()).append('\n');
                    break;
                case "empty":
                    sb.append(empty()).append('\n');
                    break;
                case "front":
                    sb.append(front()).append('\n');
                    break;
                case "back":
                    sb.append(back()).append('\n');
                    break;
            }

        }
        System.out.println(sb);

    }

    public static void push(int item) {
        queue[last] = item;
        last++;
    }

    public static int pop() {
        if (last - first == 0) {
            return -1;
        } else {
            int value = queue[first];
            first++;
            return value;
        }
    }

    public static int size() {
        return last - first;
    }

    public static int empty() {
        if (last - first == 0) {
            return 1;
        } else return 0;
    }

    public static int front() {
        if (last - first == 0) {
            return -1;
        } else {
            int F = queue[first];
            return F;
        }
    }

    public static int back() {
        if (last - first == 0) {
            return -1;
        } else {
            int B = queue[last - 1];
            return B;
        }
    }
}
profile
성실함 한스쿱

0개의 댓글