๐Ÿ““ STUDY/FASTCAMPUS

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 16์ผ์ฐจ

JuneBee 2021. 11. 16. 20:26
728x90
๋ฐ˜์‘ํ˜•

์‹œ์ฒญ ๋‚ ์งœ : 11/16/2021
์‹œ์ฒญ ๊ฐ•์˜ : ํ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜ : Data in and Data out ๋งŒ ๊ฐ€๋Šฅ
https://visualgo.net/en/list์˜ queueํƒญ์—์„œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฐ€๋Šฅ

FIFO (First in, First out)

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://www.programiz.com/java-programming/queue

  • LILO๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ (last in last out)
  • ๊ฐ€์žฅ ๋จผ์ € ๋„ฃ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ (์Šคํƒ๊ณผ ๋ฐ˜๋Œ€)
  • front (์•ž)์—์„  ๋ฌด์กฐ๊ฑด ์‚ญ์ œ๊ฐ€ ์ผ์–ด๋‚˜๊ณ , rear(๋’ค, tail์ด๋ผ๊ณ ๋„ ํ•จ) ์—์„  ๋ฌด์กฐ๊ฑด ์‚ฝ์ž…์ด ์ผ์–ด๋‚œ๋‹ค
  • "์ค„ ์„œ๊ธฐ"์™€ ๋™์ผ

์šฉ์–ด

  • enqueue : ํ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ธฐ๋Šฅ
  • dequeue : ํ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ๊ธฐ๋Šฅ
  • peek : ๋งจ ์•ž์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ›”์ณ๋ณด๋Š” ๊ธฐ๋Šฅ (literarlly peek..)

JAVA์˜ ํ

  • java์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ java.util ํŒจํ‚ค์ง€์— Queue ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•จ
  • add(value), poll(), peek(), remove() ๋ฉ”์„œ๋“œ ๊ฐ€๋Šฅ
  • Queue ํด๋ž˜์Šค์—์„œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ์„ ์œ„ํ•ด์„œ๋Š” LinkedListํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

import ๋ฌธ

import java.util.LinkedList<>();
import java.util.Queue

ํ ์ƒ์„ฑ

Queue<Integer> q = new LinkedList<>();
Queue<Node> q2 = new LinkedList<>(); //BFS์—์„œ ์ž์ฃผ ์“ฐ์ž„. Node ํด๋ž˜์Šค์— x,y,distance๋ฅผ set& get
Queue<Integer> q3 = new Queue<>(); //๋ถˆ๊ฐ€๋Šฅ !

์•ž์„œ, ํ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, 3๋ฒˆ์งธ ์ค„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ๋กœ๋Š” ํ ์ƒ์„ฑ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค!

๋ฐ์ดํ„ฐ ์ถ”๊ฐ€

add(value) ๋˜๋Š” offer(value)๋ฅผ ์‚ฌ์šฉ

q.add(1);
q2.offer(new Node(2,3));

๋ฐ์ดํ„ฐ ์‚ญ์ œ

poll()๊ณผ remove()๋ฅผ ์‚ฌ์šฉ

ํ๋Š” ๋ฌด์กฐ๊ฑด ๋ฐ์ดํ„ฐ๋ฅผ ์•ž์— ์‚ฝ์ž…ํ•˜๊ณ , ๋งจ ๋’ค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
๋”ฐ๋ผ์„œ, ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ง€์ •ํ•  ํ•„์š” ์—†์ด poll() ๋˜๋Š” remove()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งจ ๋’ค์˜ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค

q.remove();
Node info = q2.poll(); //์ด๋Ÿฐ์‹์œผ๋กœ info ์— ๋งจ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ๋‹ด์•„์„œ ํ™œ์šฉ ๊ฐ€๋Šฅ

ArrayList ํด๋ž˜์Šค๋กœ enqueue์™€ dequeue ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ

  • dequeue : ํ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด null ๋ฆฌํ„ด
public class MyQueue<T>{ 
    private ArrayList<T> queue = new ArrayList<T>(); 
    public void enqueue(T item){ 
        queue.add(item);
    }


    public T dequeue(){ 
        if(q.isEmpty()){ return null; } 
        //else: 
        return queue.remove(0); //๋งจ ์•ž ์›์†Œ๋ฅผ ์‚ญ์ œ 
    } 

    public boolean isEmpty(){ 
        if(queue.size()==0){ return true; } 
        return false; 
    }

}

ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ๋ฐ”๋กœ๊ฐ€๊ธฐ๐Ÿ‘‰ https://bit.ly/3FVdhDa

 

์ˆ˜๊ฐ•๋ฃŒ 100% ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ | ํŒจ์ŠคํŠธ์บ ํผ์Šค

๋”ฑ 5์ผ๊ฐ„ ์ง„ํ–‰๋˜๋Š” ํ™˜๊ธ‰์ฑŒ๋ฆฐ์ง€๋กœ ์ˆ˜๊ฐ•๋ฃŒ 100% ํ™˜๊ธ‰๋ฐ›์œผ์„ธ์š”! ๋” ๋Šฆ๊ธฐ์ „์— ์ž๊ธฐ๊ณ„๋ฐœ ๋ง‰์ฐจ ํƒ‘์Šน!

fastcampus.co.kr

๋ณธ ํฌ์ŠคํŒ…์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ์ฐธ์—ฌ๋ฅผ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•