본문 바로가기

Language/Structure

[Structure] Queue (First In First Out)

Queue

  • FIFO(First In First Out)의 성질을 가진 자료구조
    • 먼저 들어간 데이터가 먼저나오게되는 구조
  • 사용예
    • 우선 순위가 같은 작업 예약 (프린터의 인쇄 대기열)
    • 은행 업무
    • 콜센터 고객 대기시간
  • 주로 BFS(너비 우선 탐색)에 사용된다.
  • 자주 사용되는 함수
    • add : 데이터를 넣는것
    • poll : 데이터를 꺼냄 (최상단 자료를 지우고 반환한다.)
    • peek : 데이터를 꺼냄 (최상단 자료를 지우지 않고 반환한다.)
  1. Queue의 구조
  2. Queue의 선언
  3. Queue의 사용(연습문제)

1. Queue의 구조

  • 위 그림은 Queue의 구조이다. Stack과는 달리 데이터가 들어오는곳과 나가는곳이 다르다.
  • 데이터들을 add하면 먼저 들어간 데이터가 먼저 나가게된다.
  • 데이터를 red, white, black, blue 순으로 넣어서 데이터가 나갈때도 역시 red, white, black, blue 순으로 나간다.

2. Queue의 선언

public class Main {
    public static void main(String[] args) {
        Queue<String> que = new LinkedList<>();
        
        que.add("red");
        que.add("blue");

        System.out.println(que.poll());
        System.out.println(que.poll());
    }
}
  • 위 코드의 실행결과는 red blue 이다.
  • 먼저 들어간 red가 먼저 나오고 뒤에들어간 blue가 나오는것이다.
  • 두 개의 데이터가 들어갔고 두 개의 데이터를 poll을 사용하여 꺼냈으니, 현재 Queue에는 데이터가없는 비어있는 상태이다.
public class Main {
    public static void main(String[] args) {
        Queue<String> que = new LinkedList<>();

        que.add("red");
        que.add("blue");

        System.out.println(que.peek());
        System.out.println(que.peek());
    }
}
  • 위 코드의 실행결과는 red red 이다.
  • 먼저 들어간 red라는 데이터가 먼저 출력되는것이고, peek를 사용하였기때문에 poll과 달리 데이터를 꺼낼때 지우지않고 그대로 둔 상태에서 반환만 해줬기때문에
  • Queue에는 현재 red blue 2개의 데이터가 담겨있는 것이다.

3. Queue의 사용(연습문제)

아래의 문제를 보고 사용법을 익혀보자

https://do-hyeon.tistory.com/218

 

[LeetCode] 1700. Number of Students Unable to Eat Lunch

The school cafeteria offers circular and square sandwiches at lunch break, referred to by numbers 0 and 1 respectively. All students stand in a queue. Each student either prefers square or circu..

do-hyeon.tistory.com

 

'Language > Structure' 카테고리의 다른 글

[Structure] Stack (Last In First Out)  (0) 2021.11.07
[Structure] Array (배열)  (0) 2021.10.31