반응형
문제 풀이:
1. 각 기능 별로 완성되는 기간 확인
2. 첫 기능의 완성 기간을 기준으로 그 다음 기능의 기간과 비교하여 작다면 같이 pop
3. 다음 기능의 완성 기간이 더 클 때까지 2번 반복
4. 모든 기능이 끝나지 않았다면 2번으로 돌아가서 반복
import Foundation
//테스트 케이스
//var progresses = [93, 30, 55]
//var speeds = [1, 30, 5]
//var progresses = [95, 90, 99, 99, 80, 99]
//var speeds = [1,1,1,1,1,1]
func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] {
let len = progresses.count
var result = [Int]()
var day = Array(repeating: 0, count: len)
var temp = 0
var num = 0
// 해당 작업 기간을 계산하기 위한 반복문
for i in stride(from: 0, to: len, by: 1){
// 처음 기능 개발의 완성도
temp = progresses[i]
while true{
// 기능 개발 속도 더해주기
temp += speeds[i]
// 기능 개발이 완성되는 기간
day[i] += 1
//기능 개발 완성이 100퍼가 넘을 경우
if temp >= 100 {
break
}
}
}
// 기능이 다 완료되기 전까지
while !day.isEmpty {
var cnt = 0
// 처음 개발 기간 저장
num = day.removeFirst()
// 개발 완성된 기능 증가
cnt += 1
// 처음 개발 기간보다 다음 개발 기간이 적거나 같을 경우
while !day.isEmpty && num >= day.first! {
// 개발 완성된 기능 1 증가
cnt += 1
// 기간이 더 적으니 한꺼번에 배포
day.removeFirst()
}
한 번의 배포당 기능 수 저장
result.append(cnt)
}
return result
}
//print(solution(progresses, speeds))
문제:
https://programmers.co.kr/learn/courses/30/lessons/42586?language=swift
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Algorithm/Programmers] 피보나치 수 (0) | 2021.01.14 |
---|---|
[Algorithm/Programmers] 프린터 (0) | 2021.01.14 |
[Algorithm/Programmers] 스킬트리 (0) | 2021.01.14 |
[Algorithm/Programmers] 가장 큰 수 (0) | 2020.12.18 |
[Algorithm/Programmers] 여행 경로(DFS/BFS) (0) | 2020.12.12 |
댓글