https://programmers.co.kr/learn/courses/30/lessons/42583#
결론. 개념이 어려운 건 아닌데 중간 연산 과정이 얘 나왔는지 뺐는지 진행상황이 100이 맞는 지 101이 맞는 지 이런 작은 문제들을 해결하는 게 어려웠다.
func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int {
var maxWeight = weight
var waitingTruck = truck_weights
var ingTruck: [(Int,Int)] = []
var resultTruck: [Int] = []
var result = 0
while resultTruck.count != truck_weights.count {
if waitingTruck.count != 0 {
if maxWeight >= waitingTruck[0] {
maxWeight -= waitingTruck[0]
ingTruck.append((waitingTruck[0], 1))
waitingTruck.remove(at: 0)
}
}
for i in 0..<ingTruck.count {
ingTruck[i].1 += 1
}
if ingTruck.count != 0 {
if ingTruck[0].1 > bridge_length {
resultTruck.append(ingTruck[0].0)
maxWeight += ingTruck[0].0
ingTruck.removeFirst()
}
}
result += 1
}
return result + 1
}