Search
Duplicate

다리를 지나는 트럭

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

from collections import deque def solution(bridge_length, weight, truck_weights): # 초 단위로 각 트럭 별 위치를 모니터링할 수도 있겠지만, # 좀 더 효율적인 방법을 찾아봅시다. # # 리스트 하나와 정수 값 하나를 관리합니다. # 리스트 out[t]는 시간 t때 트럭이 탈출하여 줄어드는 weight의 배열입니다. # 정수 값은 현재 다리 위에 올라가 있는 트럭의 무게 총합입니다. i, t = 0, 1 q, weightsum = deque(), 0 while i < len(truck_weights): # 다리 위에 올라갈 수 있을 만큼 트럭을 올려보냅니다. while i < len(truck_weights) and weightsum + truck_weights[i] <= weight: # t때 올라간 트럭의 탈출 시간은 t + bridge_length 입니다. q.append( (truck_weights[i], t + bridge_length) ) weightsum += truck_weights[i] i += 1 t += 1 # 시간이 t가 되어서 트럭이 탈출해야 하는 상황을 처리합니다. if q[0][1] == t: w, t = q.popleft() weightsum -= w # 트럭이 탈출하는 시점으로 이동합니다. if len(q) > 0: w, t = q.popleft() weightsum -= w # 큐의 트럭들을 모두 탈출시킵니다. while len(q) > 0: w, t = q.popleft() return t
Python
복사

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges