자료구조

성현식·2022년 11월 17일
0

algorithm

목록 보기
6/7

스택

import sys	# 스택 - 내장 list와 구조가 동일하여 추가적인 패키지를 불러오지 않아도 된다.
			# 임의로 만들어 본 스택 - 백준 10828
n = int(sys.stdin.readline())
m_list = [sys.stdin.readline().replace('\n', '') for _ in range(n)]

s_list = []
ans_list = []

for m in m_list:
    if m.split()[0] == 'push':
        s_list.append(m.split()[1])
    elif m.split()[0] == 'pop':
        if len(s_list) != 0:
            ans_list.append(s_list[-1])
            s_list.pop()
        else: ans_list.append(-1)
    elif m.split()[0] == 'size':
        ans_list.append(len(s_list))
    elif m.split()[0] == 'empty':
        if len(s_list) == 0: ans_list.append(1)
        else: ans_list.append(0)
    elif m.split()[0] == 'top':
        if len(s_list) == 0: ans_list.append(-1)
        else:
            ans_list.append(s_list[-1])

for x in ans_list:
    print(x)

선입선출.

# 덱
from collections import deque
queue = deque([4, 5, 6])
queue.append(7)
queue.append(8)
print(queue) # deque([4, 5, 6, 7, 8])
queue.popleft()
queue.popleft()
print(queue) # deque([6, 7, 8])

# 클래스 모듈
from queue import Queue
que = Queue()
que.put(4)
que.put(5)
que.put(6)
print(que.get())

#우선순위 큐
from queue import PriorityQueue
p_que = PriorityQueue()
p_que.put(4)
p_que.put(1)
p_que.put(7)
p_que.put(3)
print(p_que.get())

#우선순위 큐 2
import heapq
pq = []
heapq.heappush(pq, 1)
heapq.heappush(pq, 3)
heapq.heappush(pq, 2)
heapq.heappop(pq) # 1
heapq.heappop(pq) # 2
heapq.heappop(pq) # 3

큐의 경우 일반 list 에서 pop(0)을 할 경우, 나머지 원소들을 하나씩 당기는 과정에서 시간적 손실이 일어나기에 deque를 활용한다.

0개의 댓글