본문 바로가기
Study or Lecture/항해 99클럽 코딩테스트 스터디

항해 99클럽 코딩테스트 스터디 14일차 TIL (자바 / 비기너)

by yoondoo 2024. 11. 10.
728x90

 

 

<오늘의 학습 키워드>

- 큐

<오늘의 문제>

제목 : 백준 / 실버4 / 10845번 큐

https://www.acmicpc.net/problem/10845

<풀이>

정답은 더보기

더보기
package BOJ.자료구조.큐_10845.insub2004_241110;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

    private static class MyQueue {
        int[] array = new int[10001];
        int top = 0;
        int head = -1;
        int size = 0;

        public void push(int x) {
            array[++head] = x;
            size++;
        }

        public int pop() {
            if (size == 0) {
                return -1;
            }

            size--;
            return array[top++];
        }

        public int size() {
            return size;
        }

        public int empty() {
            return size == 0 ? 1 : 0;
        }

        public int front() {
            if (size == 0) {
                return -1;
            }

            return array[top];
        }

        public int back() {
            if (size == 0) {
                return -1;
            }

            return array[head];
        }
    }

    public static void main(String[] args) throws Exception {
        MyQueue queue = new MyQueue();

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        for (int i = 0; i < N; i++) {
            String[] str = br.readLine().split(" ");
            if (str.length == 2) {
                queue.push(Integer.parseInt(str[1]));
            }

            switch (str[0]) {
                case "pop" :
                    System.out.println(queue.pop());
                    break;
                case "size" :
                    System.out.println(queue.size);
                    break;
                case "empty" :
                    System.out.println(queue.empty());
                    break;
                case "front" :
                    System.out.println(queue.front());
                    break;
                case "back" :
                    System.out.println(queue.back());
                    break;
            }
        }

    }
}

 

- 바로 전 스택 문제와 마찬가지로 구현되어있는 Queue말고 MyQueue 클래스를 직접 구현해서 진행했다.

- 해당 문제에서는 정수만 저장한다고 나와있어서 굳이 제네릭을 사용하지 않았다.

- Myqueue클래스 내부의 int[ ] 배열은 정수를 저장할 용도

- top는 queue의 제일 앞을 가리키고 있다.

- head는 queue에 정수가 push될 때 사용할 인덱스 변수다.

- size는 현재 queue에 정수가 얼만큼 있는지 나타내는 변수다.

 

<결론, 주의할점>

 

반응형

댓글