Algorithm / 다리를 지나는 트럭

알고리즘 코드카타

목록 보기
54/59

문제

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

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
}

결과

profile
이유있는 코드를 쓰자!!

0개의 댓글