스택(Stack)은 삽입과 삭제연산을 후입선출 LIFO (Last In First Out) : 나중에 들어간 것이 제일 먼저 나온다.
이런 특징을 가지고 있습니다.
Python에서는 삽입 시에는 'append()' 명령어를 사용하고 삭제연산을 수행할 시에는 'pop()' 명령어를 사용합니다.
파이썬에서 스택을 구현할 때에는 간편하게 리스트를 사용하면 됩니다.
예시로 한번 확인해 볼까요?
Stack = []
print(Stack) # 출력값은 빈 배열이 출력된다.
출력은 어떻게 나올까요?
이렇게 빈 리스트가 출력되었습니다.
append()와 pop를 사용해 봅시다.
Stack = [1, 2, 3, 4, 5]
Stack.append(6)
Stack.append(7)
Stack.pop()
print(Stack)
이 경우에는 출력값이
이렇게 나오는 것을 확인하실 수 있습니다.
여기서 나오는 pop명령어로 확인할 수 있는 것이 스택의 특징입니다.
스택은 후입선출이기 때문에 제일 나중에 들어간 7이 pop 되어서 나오게 된 것을 알 수 있습니다.
만약 pop 한 결과를 출력하고 싶으시다면
print(Stack.pop())
이렇게 하시면 스택의 제일 마지막에 있는 원소가 출력될 것입니다.
pop(0)을 하게 된다면 제일 밑에 있는 즉 스택에 제일 처음 들어간 첫 번째 값이 출력되게 되므로 위의 Stack에서 pop(0)을 하게 된다면 1이 출력될 것입니다.
번외로 pop(-1) == pop() 동일한 기능입니다.
큐 (queue)는 선입선출(First In First Out) FIFO의 성질: 처음 들어간 원소가 처음 나오게 된다.
쉽게 생각해서 급식실 줄을 서있는 것이라고 보면 됩니다. 먼저 온 사람이 먼저 밥을 받는 것이죠.
queue에서 사용되는 연산과 코드 예시를 보겠습니다.
정확하게는 import queue를 사용하면 queue라이브러리와 보통은 python에서는 큐를 구현할 때 deque(덱)을 사용하여 구현합니다. 아래의 코드는 stack을 활용하영 queue처럼 보이게 할 뿐입니다.
queue = [1, 2, 3, 4, 5]
queue.append(6)
queue.append(7)
queue.pop(0)
print(queue)
Stack = DFS로 주로 사용됩니다.
Queue = BFS로 주로 사용됩니다.
'알고리즘 > 알고리즘 이론' 카테고리의 다른 글
BFS, DFS 알고리즘 [알고리즘 이론] (0) | 2024.04.07 |
---|---|
카데인 알고리즘(Kadane's Algorithm) Python [알고리즘 이론] (0) | 2024.03.22 |