-
[programmers/Swift] 다리를 지나는 트럭Archive/Questions 2022. 5. 12. 15:46728x90
programmers.co.kr - 코딩테스트연습 - Lv.2 - 스택/큐 - 다리를 지나는 트럭
Constraints :
- bridge_length는 1 이상 10,000 이하입니다.
- weight는 1 이상 10,000 이하입니다.
- truck_weights의 길이는 1 이상 10,000 이하입니다.
- 모든 트럭의 무게는 1 이상 weight 이하입니다
// // Created by Yongwoo Marco on 2022/05/12. // Copyright © 2022 Yongwoo Marco Kim. All rights reserved. // func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int { var trucks = truck_weights.map{ ($0, bridge_length) } var bridge = [(Int, Int)]() var second = 0, currentWeight = 0 while(!trucks.isEmpty || !bridge.isEmpty) { for (index, truck) in bridge.enumerated() { if truck.1 == 0 { currentWeight -= truck.0 bridge.remove(at: index) } } if let first = trucks.first, currentWeight + first.0 <= weight { currentWeight += first.0 bridge.append(trucks.removeFirst()) } for truck in 0..<bridge.count { bridge[truck].1 -= 1 } second += 1 } return second } print(solution(2, 10, [7,4,5,6])) // 8 print(solution(100, 100, [10])) // 101 print(solution(100, 100, [10,10,10,10,10,10,10,10,10,10])) // 110
How I tried this :
직관적으로 문제를 해결했다.시간 초과를 고려해서 현재 다리위에 트럭 무게의 합은 트럭을 추가할때마다
무게의 합을 계산하는 형태로 매번 값을 구해내는 반복을 줄였다.
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90'Archive > Questions' 카테고리의 다른 글
[programmers/Swift] H-Index (0) 2022.05.13 [programmers/Swift] K번째수 (0) 2022.05.12 [programmers/Swift] 프린터 (0) 2022.05.11 [programmers/Swift] 위장 (0) 2022.05.11 [programmers/Swift] 체육복 (0) 2022.05.11