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

Junyoung Park·2022년 5월 23일
0

코딩테스트

목록 보기
426/631
post-thumbnail

1. 문제 설명

기능개발

2. 문제 분석

현재 진도율에 따라 배포 가능 여부를 판단할 수 있다. 앞에서부터 접근, 배포 가능한 최대 지점까지를 카운트한 뒤 남아 있는 기능 정보를 업데이트하자.

3. 나의 풀이

import Foundation

func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] {
    var answers = [Int]()
    var progresses = progresses
    var speeds = speeds
    while progresses.isEmpty == false {
        // 작업이 존재하는 동안 반복
        var newProgresses = [Int]()
        for data in zip(progresses, speeds) {
            let pro = data.0
            let speed = data.1
            newProgresses.append(pro + speed)
            // 현 시점 개발 진도 업데이트
        }
        var done = 0
        progresses = newProgresses
        for pro in progresses {
            if pro >= 100 {
                done += 1
            } else {
                break
                // 배포 불가능하다면 break.
            }
            // 앞에서부터 완료가 된 기능까지만 배포 가능
        }
        
        if done != 0 {
            progresses = Array(progresses[done..<progresses.count])
            speeds = Array(speeds[done..<speeds.count])
            answers.append(done)
            // 배포한 기능은 제외, 남아 있는 기능으로 progresses 및 speeds 구성
        }
    }
    return answers
}
profile
JUST DO IT

0개의 댓글