[Level 2 / 스택] 기능개발 + Swift

기능개발

코딩테스트 연습 - 기능개발

나의 풀이

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?

처음에 테스트케이스 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]

좋은 웹페이지 즐겨찾기