문제
프로그래머스 / 다리를 지나는 트럭
1) 문제 풀이
✅ 문제 풀이 방법
- 큐(Queue)를 이용한 방식으로 문제 해결
- 매 초마다 트럭을 다리에서 한 칸씩 앞으로 움직임 ->
Queue.removeFirst()
- 현재 다리 위 총 무게 + 다음 트럭 무게 <=
weight라면 Queue에 다음 트럭 추가
weight보다 크다면 대기 -> Queue에 0 추가
- 다리 큐의 길이는 항상
bridge_length를 유지
func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int {
var time = 0
var bridgeQueue = Array(repeating: 0, count: bridge_length)
var totalWeight = 0
var truckQueue = truck_weights
var index = 0
while !bridgeQueue.isEmpty {
time += 1
totalWeight -= bridgeQueue.removeFirst()
if let nextTruck = truckQueue.first {
if totalWeight + nextTruck <= weight {
bridgeQueue.append(nextTruck)
totalWeight += nextTruck
truckQueue.removeFirst()
} else {
bridgeQueue.append(0)
}
}
}
return time
}
결과
