func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] {
var max = 0
var count = 0
var results: [Int] = []
for i in 0..<progresses.count {
let left = Int(ceil(Double((100 - Double(progresses[i])) / Double(speeds[i]))))
if left > max {
max = left
if i != 0 { results.append(count) }
count = 1
} else {
count += 1
}
if i == progresses.count - 1 { results.append(count) }
}
return results
}
처음에 테스트케이스 11가 틀렸다고 나왔다. 그 이유는, 작업의 남은 날을 나타내는 left의 계산이 틀렸기 때문이다.
progresses에서 progress가 90일 때 10이 남았는데, 하루에 4만큼을 진행한다면 남은 날은 2.5에서 올림을 한 3이어야 한다. 하지만 Int타입이었기에 10을 4로 나누었을 때 2가 나오게 된다. 그래서 타입을 Double로 바꾸었고, 리턴의 타입은 Int이었기에 다시 타입을 변환하였더니 통과되었다.
let left = Int(ceil(Double((100 - progresses[i]) / speeds[i]))) 에서
let left = Int(ceil(Double((100 - Double(progresses[i])) / Double(speeds[i])))) 로 수정하였다.
let progresses = [92, 90]
let speeds = [4, 4]
return [1, 1]