[프로그래머스]level2-다리를 지나는 트럭-Python[파이썬]

s2ul3·2022년 11월 16일
0
post-custom-banner

문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/42583

문제설명

알고리즘

코드

# bridge_length : 다리를 건널 수 있는 최대 트럭 수
#[_, _, _]
# weight : 몇키로 버틸 수 있는지

def solution(bridge_length, weight, truck_weights):
    #answer : 경과시간
    #bridge : 다리 길이와 같은 길이의 값이 0으로 된 리스트 생성
    answer = 0
    bridge = [0 for _ in range(bridge_length)]
    truck_sum = 0
    while bridge != []:     
        # 트럭이 다리를 지나는 과정을 answer+=1을 통해 경과시간 계산
        answer += 1
        passed = bridge.pop(0)
        truck_sum -= passed
        if truck_weights != []:
            # 다리 위에 있느 트럭의 총 무게와 다음 대기열에 있는 트럭 무게 합이 weight을 넘지 않는 경우
            if truck_sum + truck_weights[0] <= weight:            
                t = truck_weights.pop(0)
                bridge.append(t) # 해당 트럭을 다리 위에 추가
                truck_sum += t
            # 무게를 넘는경우, 0을 추가하여 다리의 길이를 유지
            else:
                bridge.append(0)  
    return answer
          # bridge : [0, 0, 0]
          # bridge : [0, 0, 7] // wait_truck : [4, 5, 6] # t = 1 
    #     # bridge : [0, 0, 7] -> [0, 7, 0] # t = 2
    #     # bridge : [0, 7, 0] -> [7, 0, 0] # t = 3
          # bridge : [7, 0 ,0] -> [0, 0] -> [0, 0, 4], wait_truck : [5, 6] # t = 4
          # bridge : [0, 0, 4] -> [0, 4, 5] wait_truck : [6] # t = 5
    #     # bridge : [0, 4, 5] -> [4, 5, 0] # t = 6
    #     # bridge : [4, 5, 0] -> [5, 0, 0] # t = 7
    #     # bridge : [5, 0, 0] -> [0, 0] -> [0, 0, 6], wait_truck : [] # t = 8
    #     # bridge : [0, 0, 6] -> [0, 6] # t = 9
    #     # bridge : [0, 6] -> [6] # t = 10
    #     # bridge : [6] -> [] # t = 11
profile
statistics & computer science
post-custom-banner

0개의 댓글