[스택/큐] 다리를 지나는 트럭 (프로그래머스, Level 2)

Soorim Yoon·2022년 9월 29일
0
post-custom-banner

문제

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

  • bridge_length는 다리의 길이, weight는 다리에 최대로 지나갈 수 있는 트럭 무게, truck_weights는 각 트럭의 무게 정보를 담은 배열이다
  • 길이 1만큼의 다리를 지나는데 시간 1이 소요될 때, 최종적으로 모든 트럭이 다리를 지난 후 걸리는 시간을 구해라.

풀이

  • 다리 길이 만큼의 길이를 가지는 큐(queue)를 생성해서, 다리를 지나는 트럭의 무게를 큐에 삽입하거나 빼준다.

코드

def solution(bridge_length, weight, truck_weights):
    answer = 0
    
    queue = [0]*bridge_length   # 다리 길이 만큼의 요소를 가지는 큐 생성
    while queue:
        answer += 1     # 길이 1만큼 이동 (시간 1 증가)
        queue.pop(0)
        
        if len(truck_weights) > 0:      # 트럭이 남아 있고, 새로 트럭을 추가해도 무게의 합이 최대 가능 무게보다 작으면
            if sum(queue) + truck_weights[0] <= weight:
                queue.append(truck_weights.pop(0))      # truck_weights[0]번째 트럭을 도로 위에 추가함
            else:
                queue.append(0)     # 트럭을 추가할 수 없으면 큐에 0을 추가함
    
    return answer

실행 결과

💡 새로 알게된 점

문법

queue.pop(0)

큐의 0번째 요소를 pop 한다.

참고

https://js-note.tistory.com/52
https://this-programmer.tistory.com/372

profile
👩🏻‍💻 AI를 좋아하는 IT학부생
post-custom-banner

0개의 댓글