알고리즘 문제 풀이

[프로그래머스] 42586 기능개발 Swift

lgvv 2021. 11. 16. 14:41

✅ 이 문제는 쉽다.

하지만 테케 2,4번이 틀려서 조금 헤매었는데, 그 이유는

 

var a : Int = 4

var b : Int = 3

이라고 가정하자.

 

Double(a/b)  // 1.0

이렇게 작성했기에 문제가 발생했던 것이다.

그래서 수정 

Double(a) / Double(b)로 수정하였다

 

//
//  File.swift
//  algorithm
//
//  Created by Hamlit Jason on 2021/11/15.
//https://programmers.co.kr/learn/courses/30/lessons/42586

import Foundation

func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] {
    
    var task : Int = 0 // 남은 일
    var day = 0
    
    var count = 0
    var answer = [Int]()
 
    for i in 0..<progresses.count {
        
        task = 100 - progresses[i] // 남은 일의 양
        
        if day == 0 {
            day = day + Int(ceil(Double(task) / Double(speeds[i])))
            if day == 0 {
                day = 1
            }
            count = 1
        } else {
            let temp = task - (day * speeds[i])
            
            if temp <= 0 {
                count = count + 1
            } else {
                answer.append(count)
                count = 1
                
                day = day + Int(ceil(Double(temp) / Double(speeds[i])))
            }
        }
    }
    answer.append(count)
    
    return answer
}

//print(solution([96,94], [3,3]))

//print(solution([93, 30, 55], [1, 30, 5]))

//var a : Int = 4
//var b : Int = 3
//
//print(ceil(Double(a/b)))
//print(Double(a) / Double(b))