[CodeTest] Lv2 - 다리를 지나는 트럭

그냥·2022년 8월 29일
0

codetest

목록 보기
9/9

문제

다리를 지나는 트럭



접근 방법

1) 초마다 다리에서의 트럭 위치가 바뀌므로 시간과 위치와 관련된 변수를 선언해줘야 한다.
2) 다리가 수용할 수 있는 최대 무게에 따라서 다리에 다음 트럭이 추가될지 말지를 판별한다.
3) 추가되면 다리에 새로운 트럭의 위치를 추가해주고 시간 += 1을 해준다.
4) 추가되지 않는다면 다리에 0(트럭이 없음)을 추가해주고 시간 += 1을 해준다.



풀이

def solution(bridge_length, weight, truck_weights):
    bridge = [ 0 for _ in range(bridge_length) ]
    answer = 0
    
    while bridge:
        answer += 1
        bridge.pop(0)
        
        if truck_weights:
            if sum(bridge) + truck_weights[0] <= weight:
                bridge.append(truck_weights.pop(0))
            else: 
                bridge.append(0)
        
    return answer
  • bridge: 다리에서의 트럭 위치를 알 수 있어야한다. 그러므로 다리의 길이에 맞춰 모든 원소가 0인 리스트를 선언한다. 원소가 0인 것은 트럭이 없다는 것이다.
  • answer: 다리를 건너는 데에 얼마나 걸리는 시간이다.
  • while bridge: bridge의 길이가 0이 되면 반복문이 멈춘다.
  • if truck_weights: truck_weights의 길이가 0이 되면 반복문이 멈춘다.
  • 만약 bridge에 있는 트럭의 무게의 합과 그 다음 들어올 트럭의 무게의 합이 weight보다 작거나 같다면 bridge 위에 그 다음 트럭(truck_weights[0])를 추가해준다.
  • 그 반대라면 bridge에 0만 추가해준다.

0개의 댓글