자료구조와 알고리즘/이것이 취업을 위한 코딩테스트다

자료구조- 스택/큐 자료구조(DFS/BFS를 배우기 전에 선행되어야 하는 자료구조 개념)

얄루몬 2021. 8. 20. 14:03

https://youtu.be/7C9RgOcvkvo?list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC


 

- 대기업에서는 DFS/BFS를 적절히 활용한 것을 문제로 많이 출제한다.

<선행되어야 하는 자료구조 개념 - Stack>

- 다양한 알고리즘에서 Stack 자료구조의 동작 방법과 사용 방법에 대해서 알아두어야 한다.

#스택 구현 예제

stack = []

stack.append(5)
stack.append(2)
stack.append(3)
stack.append(7)
stack.pop()
stack.append(1)
stack.append(4)
stack.pop()

print(stack[::-1])#최상단 원소부터 출력
print(stack)  #최하단 원소부터 출력

- 파이썬에서 append() 함수와 pop()함수를 사용하면 손쉽게 스택을 구현할 수 있다. (즉, 별도의 표준라이브러리 필요 없이 기본제공 객체를 사용하면 된다.) 


<선행되어야 하는 자료구조 개념 - Queue>

from collections import deque
#큐 구현을 위한 deque 라이브러리 사용

queue = deque()

queue.append(5)
queue.append(2)
queue.append(3)
queue.append(7)
queue.popleft()
queue.append(1)
queue.append(4)
queue.popleft()

print(queue) #먼저 들어온 순서대로 출력
queue.reverse() #역순으로 바꾸기
print(queue)

- 큐를 이용할 땐 큐라이브러리를 사용하는 것이 효율적이다. 리스트로도 큐의 기능을 구현할 순 있지만 시간복잡도가 훨씬 높기 때문에 라이브러리 사용을 하자!

- 그림에서는 왼쪽에서 들어와서 오른쪽으로 나가는 구조지만 코드를 구현할 땐 오른쪽에서 왼쪽으로 나가는 개념으로 생각해야 한다. popleft()!