deque() 는 스택과 큐의 기능을 모두 가진 객체로 출입구를 양쪽에 가지고 있음.
메서드에 따라 스택처럼 써도되고, 큐처럼 써도된다.
여기서 잠깐 스택과 큐에 대해 간단히 알아보자.
1. 스택 구현 : append(), pop()
스택(stack)이란 쌓아 올린다는 것을 의미
'가장 마지막에 삽입된 자료가 가장 먼저 삭제된다'라는 구조적 특징을 가짐(후입선출(LIFO, Last-In-First-Out) 구조)
top으로 정한 곳을 통해서만 접근가능(삽입, 삭제 모두)
입력시에는 append() 메서드를 이용하고, 출력시에는 pop()을 이용
2. 큐 구현 : appendleft(), pop(), append(), popleft()
Queue의 사전적 의미는 줄을 서서 기다리는 것을 의미
따라서 은행에서 먼저 온 사람의 업무를 창구에서 처리하는 것과 같이
선입선출(FIFO, First in first out)방식의 자료구조
자바에서는
스택에 쌓아올릴때 push() 메서드를,
맨위에 저장된 객체를 반환하고 삭제할때는 pop() 메서드를 사용하고
큐에 객체를 저장할때는 offer() 메서드를,
맨처음 저장된 객체를 반환하고 삭제할때는 poll() 메서드를 사용한다.
다시 파이썬으로 돌아와서, deque사용법에 대한 예시를 보면
queue = deque()라고 선언 후
queue.append(i)를 하면 queue에 i를 쌓는다
queue.popleft() 하면 맨먼저 넣은것을 뺀다
그리고 queue.append(queue.popleft())하면 맨먼저 뺸것을 다시 쌓는다.
예를들어, queue에 1,2,3,4 리스트가 있다하자
queue.popleft()하면 queue에선 1이 빠진 2,3,4가 있게되고
queue.append(queue.popleft()) 하면 2,3,4,1 의 리스트가 만들어진다.
참고자료
https://www.codeit.kr/community/threads/3402
https://staticclass.tistory.com/100
'Algorithm > Data Structure' 카테고리의 다른 글
[Java] int 형(Primitive type)배열을 List로 + 내림차순( Stream 사용) (0) | 2022.11.22 |
---|---|
[Java] 자바의 데이터 타입(primitive type, reference type) (0) | 2022.11.22 |
[Python] 힙 자료구조 / 힙큐(heapq) (0) | 2022.09.19 |
Arrays.sort ( 사전순서대로 정렬해주는 메소드) (0) | 2021.10.25 |
String, StringBuffer/ StringBuilder (0) | 2021.06.23 |