스택 / 큐 알고리즘

xlxlshinee·2021년 6월 23일
0

알고리즘

목록 보기
1/6

스택

: 스택은 데이터를 임시 저장할 때 사용하는 자료구조로, 데이터의 입력과 출력 순서는 후입선출(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
profile
늦더라도 차근 차근 앞으로 걷기

0개의 댓글