큐 QUEUE (JAVA)

횽·2024λ…„ 8μ›” 24일
0

algorithm&data-structure

λͺ©λ‘ 보기
11/17

πŸ“ QUEUE λž€?

  • 데이터λ₯Ό μŒ“λŠ” ν˜•νƒœμ˜ μžλ£Œκ΅¬μ‘°μ΄λ‹€.
  • 데이터λ₯Ό ν•˜λ‚˜μ”©λ§Œ λ„£κ³  λΊ„ 수 μžˆλ‹€.
  • 단방ν–₯ μž…μΆœλ ₯ ꡬ쑰 : ν•œ μͺ½μœΌλ‘œ λ°μ΄ν„°μ˜ λ“€μ–΄μ˜€κ³  λ°˜λŒ€ μͺ½μœΌλ‘œ 데이터가 λ‚˜κ°„λ‹€.
    -> FIFO μ„ μž…μ„ μΆœμ΄λ‹€.
  • Rear : 데이터가 λ“€μ–΄μ˜€λŠ” μœ„μΉ˜λ‘œ κ°€μž₯ λ’€λ₯Ό λœ»ν•œλ‹€.
  • Front : 데이터가 λ‚˜κ°€λŠ” μœ„μΉ˜λ‘œ κ°€μž₯ μ•žμ„ λœ»ν•œλ‹€.

1. 큐 λ©”μ†Œλ“œ

  • offer(data) : 큐에 데이터λ₯Ό μ‚½μž…ν•œλ‹€.
  • add(data) : 큐에 데이터λ₯Ό μ‚½μž…ν•œλ‹€.

큐의 크기보닀 데이터λ₯Ό 더 μ‚½μž…ν•˜λ €κ³  ν•  λ•Œ offer λ©”μ†Œλ“œλŠ” falseλ₯Ό λ°˜ν™˜ν•œλ‹€. add λ©”μ†Œλ“œλŠ” μ—λŸ¬λ₯Ό λ°˜ν™˜ν•œλ‹€.

  • poll() : νμ—μ„œ 데이터λ₯Ό ν•˜λ‚˜ μ‚­μ œν•œλ‹€.
  • clear() : 큐에 μžˆλŠ” 데이터 전체λ₯Ό μ‚­μ œν•œλ‹€.
  • peek() : νμ—μ„œ 데이터λ₯Ό μ‚­μ œν•˜μ§€ μ•Šκ³  λ°˜ν™˜λ§Œ ν•œλ‹€.
  • isEmpty() : 큐가 λΉ„μ–΄μžˆλ‹€λ©΄ true, λΉ„μ–΄μžˆμ§€ μ•Šλ‹€λ©΄ falseλ₯Ό λ°˜ν™˜ν•œλ‹€.
  • size() : 큐의 μ‚¬μ΄μ¦ˆλ₯Ό λ°˜ν™˜ν•œλ‹€.

2. κ΅¬ν˜„ (+μ„ μ–Έ) JAVA

(1) LinkedList

  • 동적 크기의 데이터λ₯Ό μ €μž₯ν•  수 μžˆλ‹€.
  • μ‚½μž…κ³Ό μ‚­μ œκ°€ λΉˆλ²ˆν•  λ•Œ μ„±λŠ₯이 μ’‹λ‹€.
import java.util.LinkedList;
import java.util.Queue;

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();

        queue.add(1); 
        queue.add(2);
        queue.add(3);

        System.out.println(queue.peek()); // 1
        System.out.println(queue.poll()); // 1
    }
}

(2) PriorityQueue μš°μ„ μˆœμœ„ν
: 데이터λ₯Ό μ‚½μž…ν•  λ•Œλ§ˆλ‹€ μš°μ„ μˆœμœ„λ‘œ μ •λ ¬λ˜λŠ” 큐

  • 기본적으둜 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.
import java.util.PriorityQueue;
import java.util.Queue;

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue = new PriorityQueue<>();

        queue.add(3);
        queue.add(1);
        queue.add(2);

        System.out.println(queue.peek()); // 1 (κ°€μž₯ μž‘μ€ μš”μ†Œ)
        System.out.println(queue.poll()); // 1
    }
}



0개의 λŒ“κΈ€