sw/알고리즘

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

넉넉- 2022. 12. 19. 18:30

알게 된 내용

  • Tuple로 이루어진 리스트(ex. [(1,2,3), (1,4,6), (1,6,9)] 에서 tuple의 n번째 원소끼리만 더하는 방법:
    • sum(i for i,j,k in tuple_list) : 3
    • sum(j for i,j,k in tuple_list) : 12
    • sum(k for i,j,k in tuple_list) : 18

답안

  • 다리를 지나고 있는 ing_que 를 만들어서 풀이하였음.
import collections 

def solution(bridge_length, weight, truck_weights):
    answer =0 
    truck_que = collections.deque(truck_weights)
    ing_que =collections.deque()
    
    #초기화
    time =1
    ing_que.append((truck_que.popleft(),1)) #1초에 들어왔음.
    while ing_que:
        time +=1
        #다리 지난 것은 q에서 빼주기
        if time - ing_que[0][1] == bridge_length:
            ing_que.popleft()
        
        #무게 여분 남을 경우 트럭 추가로 올림
        if truck_que and sum(i for i,j in ing_que) + truck_que[0] <= weight:
            ing_que.append((truck_que.popleft(),time))

    return time