[swift] 다리를 지나는 트럭

ohtt-iOS·2020년 12월 13일
0

프로그래머스

목록 보기
1/9
post-thumbnail

코드는 Swift로 작성하였습니다.
제가 직접 작성한 코드라 최적의 코드가 아닐 수 있음을 알려드립니다. 🐹


문제는 저작권 관련 문제가 있을 수 있어서 적어두지 않았습니다.



✍🏻 생각정리

어떤 트럭이 다리 위에 있는지 체크 해야하고,
그 트럭들이 얼마나 그 다리 위에 있었는지 체크 해야한다.
removeFirst() 는 시간복잡도가 높기 때문에 사용하지 않는 것도 괜찮겠다!
index처럼 표시를 통해서 다리 위에 있는 트럭들을 구분해보자 !



👩🏻‍💻 코드

import Foundation

func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int {
    var timeCheck = [Int](repeating: 0, count: truck_weights.count)
    var result = 1
    var nowFirst = 0
    var nowLast = 0
    var nowInBridge = truck_weights[0]
    
    
    while true {
        if (nowLast == truck_weights.count-1) { // 마지막 트럭이 올라가면 while 문 탈출
            break
        }
        
        result += 1 // 시간의 흐름
        
        for i in nowFirst...nowLast { // 올라가 있는 트럭들 시간 올려주기
             timeCheck[i] += 1
        }
        if timeCheck[nowFirst] >= bridge_length {  // 일정 시간이 지나면 통과처리
            nowInBridge -= truck_weights[nowFirst]
            nowFirst += 1
            
        }
        if nowInBridge + truck_weights[nowLast+1] <= weight { // 그 다음 트럭이 들어올 상황이면 넣어준다
            nowLast += 1
            nowInBridge += truck_weights[nowLast]
        }
    }
    result += bridge_length // 마지막 트럭에 대한 시간 경과 처리
    
    
    return result
}
profile
오뜨 삽질 🔨 블로그

0개의 댓글