본문 바로가기
코딩테스트/프로그래머스

[프로그래머스] 스택/큐 : 다리를 지나는 트럭 Kotlin

by 일상 속 둔치 2020. 9. 8.

다리와 대기 트럭을 Queue로 선언해준다.

 

대기 트럭은 입력 값에서 가져오고 다리 Queue의 크기를 다리 길이만큼 해주기 위해 초기에 0으로 채워서 초기화 한다.

 

대기 트럭에서 poll한 트럭을 다리 Queue로 넣어주고 다리 큐에서 poll을 통해 맨 앞의 트럭을 빼준다.

 

이때 다리를 지나는 트럭의 무게를 계산해서 트럭을 옮겨준다.

 

그리고 다리에 모든 데이터가 없어지면 종료한다.

 

import java.util.*

class Solution {
    fun solution(bridge_length: Int, weight: Int, truck_weights: IntArray): Int {
        var answer = 0
        var weightAble = weight

        var queue:Queue<Int> = LinkedList()
        var truck:Queue<Int> = LinkedList()

        for(t in 0.. truck_weights.size-1){
            truck.add(truck_weights[t])
        }

        for(i in 0..bridge_length-1){
            queue.add(0)
        }

        while(!queue.isEmpty()){
            if(queue.peek() > 0){
                weightAble += queue.peek()
            }
            queue.poll()

            if(!truck.isEmpty()) {
                if (weightAble >= truck.peek()) {
                    weightAble -= truck.peek()
                    queue.add(truck.poll())
                } else {
                    queue.add(0)
                }
            }
            answer++
        }
        return answer
    }
}

댓글