: 스택은 데이터를 임시 저장할 때 사용하는 자료구조로, 데이터의 입력과 출력 순서는 후입선출(LIFO) 방식입니다.
LIFO = 가장 나중에 넣은 데이터를 가장 먼저 꺼낸다!
스택에 데이터를 넣는 작업을 push라 하고, 스택에서 데이터를 꺼내는 작업을 pop이라고 합니다.
겹쳐 쌓은 접시처럼 데이터를 넣고 꺼내는 작업을 맨 위부터 수행합니다. 이렇게 push하고 pop하는 윗부분을 꼭대기 top이라 하고, 아랫부분을 바닥 bottom이라고 합니다.
: 큐는 스택과 같이 데이터를 임시 저장하는 자료구조입니다. 하지만 스택처럼 가장 나중에 넣은 데이터를 가장 먼저 꺼내지 않습니다.
큐는 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO) 방식입니다.
FIFO = 가장 먼저 넣은 데이터를 가장 먼저 꺼낸다!
예를 들어, 은행 창구에서 차례를 기다리거나 마트에서 계산을 기다리는 줄을 생각하면 됩니다.
큐에 데이터를 추가하는 작업을 enqueue, 데이터를 꺼내는 작업을 dequeue라고 합니다. 또 데이터를 꺼내는 쪽을 프런트 front, 데이터를 넣는 쪽을 rear 리어라고 합니다.
프린터 ✅
def solution(i, j):
ans = 0
m = max(i)
while True:
v = i.pop(0)
if m == v:
ans += 1
if j == 0:
break
else:
j -= 1
m = max(i)
else:
i.append(v)
if j == 0:
j = len(i) - 1
else:
j -= 1
return ans
다리를 지나는 트럭 ✅
def solution(bridge_length, weight, truck_weights):
a = 0
w = 0
ed = []
ing = []
while len(truck_weights) <= len(ed):
if truck_weights[0] + truck_weights[1] > weight:
ed.append(truck_weights[0])
a += bridge_length
truck_weights.pop(truck_weights[0])
else:
ed.append(truck_weights[0])
a += bridge_length
return a