import kotlin.math.*
class Solution {
fun solution(progresses: IntArray, speeds: IntArray): IntArray {
var answer = intArrayOf()
var front = -1
var count = 0
var days = progresses
.mapIndexed{ index, it ->
ceil((100 - it) / speeds[index].toDouble()).toInt()
}
.forEach{
if(front == -1) front = it
if(front >= it) count++
else if(front < it) {
front = it
answer += count
count = 1
}
}
answer += count
return answer
}
}
풀이 방식은 남은 작업일수를 계산해서 배포 가능한 날짜바로 뒤에 붙어있는 같거나 작은 수들의 개수를 구했다.
예를들어 [95, 90, 99, 99, 80, 99] / [1, 1, 1, 1, 1, 1]의 경우
남은 작업 일수는 [5, 10, 1, 1, 20, 1] 이다.
맨 앞에 5 바로 뒤에붙어있는 수 10은 5보다 크므로 1개만 배포한다.
10 바로 뒤에 붙어있는 수 [1, 1]들은 10보다 작으므로 3개 배포한다.
그러고 20 뒤에 붙어있는 수 1은 20보다 작으므로 2개 배포한다.
-> 1, 3, 2가 정답이다.