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

Gaanii·2025년 3월 5일
0

Problem Solving

목록 보기
177/210
post-thumbnail

아래 프로그래머스 로고를 클릭하면 해당 문제로 이동합니다 😀

프로그래머스로고



풀이과정


문제가 너무 부실하다. 예시만 와랄라 풀어놨지 이게뭐야.

선입선출을 따라야하므로 queue를 사용하면 금방 풀리는 문제다.
다리 위에는 일정 무게 weight만큼만 올라갈 수 있고, 그 무게 이상은 못올라가기 때문에 트럭이 다 지나갈 때 까지 나머지 트럭들은 대기해야한다.

while문 이용해 트럭이 1초마다 움직이는걸 t로 체크했고, 다리위에 하중을 if문으로 체크하면서 구현해주면 된다.


코드


from collections import deque
def solution(bridge_length, weight, truck_weights):
    t = 0                                   # 소요시간
    bridge = deque([0] * bridge_length)     # 다리 위
    current_weight = 0                      # 다리 위 트럭 무게

    while truck_weights:
        t += 1
        current_weight -= bridge.popleft()  # 맨 앞에 있는 트럭이 다리를 지나면 무게 줄어듬

        # 다리 위 트럭 무게 + 새로운 트럭 <= 다리가 견딜 수 있는 무게라면
        if current_weight + truck_weights[0] <= weight:
            current_weight += truck_weights[0]      # 대기하고 있던 트럭 무게를 다리위 트럭 무게에 더해주기
            bridge.append(truck_weights.pop(0))     # 대기하고 있던 트럭 출발~
        else:
            bridge.append(0)                        # 다리에 0을 추가해 자리 이동 표시

    t = t + bridge_length
    return t

print(solution(2, 10, [7,4,5,6]))
print(solution(100, 100, [10]))
print(solution(100, 100, [10,10,10,10,10,10,10,10,10,10]))


결과


0개의 댓글