프로그래머스 다리를 지나는 트럭

맹민재·2023년 4월 11일
0

알고리즘

목록 보기
56/134
from collections import deque

def solution(bridge_length, weight, truck_weights):
    truck_weights = deque(truck_weights)
    q = deque()
    cnt = 0
    while truck_weights:
        if q:
            for i in range(len(q)):
                q[i][0] -= 1
            if q[0][0] == 0:
                q.popleft()
        truck = truck_weights.popleft()
        cnt += 1
        if sum(map(lambda x: x[1], q)) + truck <= weight and len(q) < bridge_length:
            q.append([bridge_length, truck])
        else:
            truck_weights.appendleft(truck)
        
    while q:
        cnt += 1
        for i in range(len(q)):
            q[i][0] -= 1
        if q[0][0] == 0:
            q.popleft()
    return cnt

deque를 사용해서 문제 해결
q에 birdge_lenth 정보와 트럭의 무게를 함께 저장해서 다리가 꽉 차 있는지, 트럭을 추가해도 되는지 확인하며 진행해나가는 방식이다.

마직막에 while문을 통해 q를 비워주면서 다리 위에 남아있는 트럭이 모두 지나가는 것을 구현

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글