[Level 2 / 큐] 다리를 지나는 트럭 + Swift
다리를 지나는 트럭
https://programmers.co.kr/learn/courses/30/lessons/42583
문제 유형: 큐
트럭이 다리라는 배열에 들어간다. 먼저 들어간 트럭이 먼저 나오는, FIFO(First In First Out)구조이기에 큐로 문제를 풀면 된다.
풀이
다리가 트럭이 지나가는 것을 그대로 구현하였다. 현재 트럭은 index로 저장한다. index가 트럭 개수보다 작을 경우에 while문을 돌린다. 시간을 1초 추가하고, 다리에서 하나를 통과시킨다. 현재 다리 무게와 새로운 트럭 무게의 합이 다리의 최대 하중보다 큰 경우에는 다리에 0을 보낸다. 그렇지 않은 경우(새로운 트럭이 다리를 지나는 경우)에는 다리에 트럭을 추가하고, 총 무게를 추가하며 index를 증가한다.
func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int {
var bridge: [Int] = Array(repeating: 0, count: bridge_length)
var index = 0
var time = 0
var weights = 0
while index < truck_weights.count {
time += 1
weights -= bridge.removeFirst()
let truck = truck_weights[index]
if weights + truck > weight {
bridge.append(0)
} else {
bridge.append(truck)
weights += truck_weights[index]
index += 1
}
}
return time + bridge_length
}
Author And Source
이 문제에 관하여([Level 2 / 큐] 다리를 지나는 트럭 + Swift), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@leeesangheee/Level-2-큐-다리를-지나는-트럭저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)