๐Ÿ—„๏ธ[์ž๋ฃŒ๊ตฌ์กฐ] Queue, ๋ฐฑ์ค€ 10845

๋‹ฅ๊ฐœยท2024๋…„ 7์›” 22์ผ

๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
6/23

2. Queue

FIFO : Fist in First Out
add(T item)
remove()
peek()
isEmpty()

import java.util.NoSuchElementException;

/**
 * InnerQueueJava
 */
class Queue<T> {
    class Node<T> { //๊ฐ™์€ ํƒ€์ž…์„ ๊ฐ–๋Š” ๋…ธ๋“œ ์„ ์–ธ
        private T data;
        private Node<T> next; //๋‹ค์Œ ๋…ธ๋“œ

        public Node(T data) {
            this.data = data;
        }
    }

    private Node<T> first; //queue๋Š” ๋…ธ๋“œ๋ฅผ ์•ž ๋’ค๋กœ ์•Œ์•„์•ผ ํ•จ
    private Node<T> last;

    public void add(T item){
        Node<T> t = new Node<T>(item);

        if(last != null){//๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๊ฐ€ ์žˆ์„ ๋•Œ
            last.next = t;
        }
        last = t; // last์˜ ํ™”์‚ดํ‘œ๋ฅผ ๋งˆ์ง€๋ง‰์œผ๋กœ! ํ‘œ์‹œ!

        if (first==null){ //๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๊ฐ€ ์—†์„ ๋•Œ-- ์ฒซ ๋…ธ๋“œ ์ถ”๊ฐ€์ผ ๋•Œ
            first = last;
        }
    }

    public T remove() { //๊ฐ€์žฅ ์•ž ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜
        if (first==null) {
            throw new NoSuchElementException();
        }
        T data = first.data;
        first = first.next;

        if (first==null) {
            last = null;
        }
        return data;

    }

    public T peek() {
        if (first==null) {
            throw new NoSuchElementException();
        }
        return first.data;
    }

    public boolean isEmpty(){
        return first == null;
    }
    
}
public class QueueJava {
    public static void main(String[] args) {
        Queue<Integer> q = new Queue<Integer>();
        q.add(1);
        System.out.println(q.peek());
    }
    
}

10845 ํ ๋ฌธ์ œ

import java.util.LinkedList;
import java.util.Queue;
    //์ž๋ฐ”๋กœ ํ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” LinkedList์™€ Queue ๋ชจ๋‘ import
import java.util.Scanner;


public class queue_10845 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt(); //๋ช…๋ น์˜ ์ˆ˜
        String cmdque;
        int cmdNum=0;
        int size=0;

        Queue<Integer> que = new LinkedList<>();
        //์ž๋ฐ”์—์„œ queue๋Š” linkedList๋ฅผ ์ด์šฉํ•ด ๊ตฌํ˜„
        //add, offer = push
        //poll = ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ œ๊ฑฐ
        //peek = ๊ฐ’ ๋ฐ˜ํ™˜
        //remove

        for(int i=0; i<N; i++){
            cmdque = sc.next();

            if("push". equals(cmdque)){
                cmdNum = sc.nextInt();
                que.add(cmdNum);
                size++;
            }
            if("pop".equals(cmdque)){
                if(que.isEmpty()== true){
                    System.out.println("-1");
                }
                else{
                    System.out.println(que.poll());
                    size--;
                }
            }
            if("size".equals(cmdque)){
                System.out.println(size);
            }
            if("empty".equals(cmdque)) {
                if(que.isEmpty()== true){
                    System.out.println("1");
                }
                else System.out.println("0");
            }
            if ("front".equals(cmdque)) {
                System.out.println(que.peek());
            }
            if ("back".equals(cmdque)) {
                System.out.println(cmdNum);
            }
        }


        sc.close();

    }
    
}

[์ž๋ฃŒ๊ตฌ์กฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜] Queue๊ตฌํ˜„ํ•˜๊ธฐ in Java
https://youtu.be/W3jNbNGyjMs?si=PvSoMWNfrhc0Ws56
๋ฐฑ์ค€ QUEUE https://www.acmicpc.net/problem/10845

profile
๋ฐœ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”๋”ฉ๊ณต๋ถ€

0๊ฐœ์˜ ๋Œ“๊ธ€