삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제() 이라고 할 때
삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제()
삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제()
삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제()
삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제()
삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제()
삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제()
삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제()
삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제()
https://freedeveloper.tistory.com/370?category=888096
💡 list
이용
queue = [1, 2, 3]
queue.append(4)
~~> queue : [1, 2, 3, 4]
queue.append(5)
~~> queue : [1, 2, 3, 4, 5]
queue.pop(0)
~~> queue : [2, 3, 4, 5]
queue.pop(0)
~~> queue : [3, 4, 5, 6]
queue = [3, 2, 1]
queue.insert(0, 4)
~~> queue : [4, 3, 2, 1]
queue.insert(0, 5)
~~> queue : [5, 4, 3, 2, 1]
queue.pop()
~~> queue : [5, 4, 3, 2]
queue.pop()
~~> queue : [5, 4, 3]
list
는무작위 접근에 최전화된 자료 구조이기 때문에 성능 측면에서 추천되지 않는다.queue
가 담고 있던 모든 데이터를 앞/뒤로 쉬프트(shift)해주지 않으면 queue[i]
의 결과값이 정확하지 않을 수 있다.💡 deque
이용
collections
모듈의 deque
는 double-ended queue의 약자로 데이터를 양방향에서 추가하고 제거할 수 있게 해주는 자료 구조이다list
에는 없는 popleft()
라는 메서드를 제공해주어 첫 번째 데이터를 제거할 수 있게 해준다.from collections import deque
queue = deque([1, 2, 3])
queue.append(4)
~~> queue : deque([1, 2, 3, 4])
queue.append(5)
~~> queue : deque([1, 2, 3, 4, 5])
queue.popleft()
~~> queue : deque([2, 3, 4, 5])
queue.popleft()
~~> queue : deque([3, 4, 5])
from collections import deque
queue = deque([3, 2, 1])
queue.appendleft(4)
~~> queue : deque([4, 3, 2, 1])
queue.appendleft(5)
~~> queue : deque([5, 4, 3, 2, 1])
queue.pop()
~~> queue : deque([5, 4, 3, 2])
queue.pop()
~~> queue : deque([5, 4, 3])
popleft()
와 appendleft()
메서드 모두 O(1) 의 시간 복잡도를 가진다.linked list
를 사용하고 있기 때문에 i
번째 데이터에 접근하려면 앞/뒤부터 i
번 순회해 접근할 수 밖에 없다.💡 Queue
사용
deque
와 달리 방향성이 없기 때문에 데이터 추가와 삭제가 하나의 메서드로 처리put(x)
get()
from queue import Queue
que = Queue()
que.put(1)
que.put(2)
que.put(3)
que.get()
~~> 1
que.get()
~~> 2
que.get()
~~> 3
Queue
의 성능도 deque
와 마찬가지로 데이터를 추가 및 삭제 : O(1),