코딩 연습/Python

섹션5: 자료구조 활용_큐

썬2 2021. 11. 18. 00:42

큐: FIFO(First in First out)

1. 리스트 구현

queue = []

queue.append()

queue.pop(0) # 첫번째 원소 나가게 하기.

하지만 이런 식의 큐는 선호하지 않는다. 왜냐하면 pop(0)을 하면서 O(N)이 되기에 비효율적이기 때문!

 

2. deque: 양방향에서 넣을 수 있다.

from collections import deque

queue = deque(리스트)

queue.appendleft() # 앞에서 넣기

queue.popleft() # 뒤에서 꺼내기

queue.append() # 뒤에서 넣기

 

3. Queue

from queue import Queue

que = queue()

que.put() #추가

que.get() # 삭제

 

5번: 공주 구하기

dq에 왕자들이 다 들어있다고 생각한다.

본인 순서를 외치고 맨 뒤로 줄 선다.

k번째면 본인 순서만 외치고 뒤로 서지 않는다.

 

6번: 응급실

n번째 사람이 진료를 받으면 break

if 자기보다 값이 높으면 맨뒤로 보내기. -> any()

else: 자기보다 높은 값이 없어서 진료 받는 것이 확정이므로, 진료를 받는 횟수에 +1 하기.

 

7번: 교육과정설계

dq에 필수과목 넣기

현재 과목이 필수과목에 해당되는지 확인 후, 체크할 순서가 맞지 않으면 NO 출력.