순서대로 배포될 수 있기 때문에 <순서: 진도> 로 개발할 기능을 저장한다. dict_p
진도[93, 30, 55] ---> {0: 93, 1: 30, 2: 55}
dict_p 의 개수가 0 이상일 때까지 while문을 돌면서 (아직 개발할 기능이 남아있음)
속도 만큼을 더한다.
현재 가리키는(p) 개발의 진도가 100 이상이면, 이후 100 이상의 기능들까지 count 를 새서 answer 에 추가한다.
100 - 진도 / 속도 로 일 해야 하는 날짜를 저장한다. (workDays)
workDays를 1번 for문 돌면서,
현재 가리키는 (p) 날짜가 뒤의 날짜보다 크거나 같다면 count 를 +1 한다. (동시에 배포되는 개발 건수 + 1)
def solution(progresses, speeds):
answer = []
size = len(progresses)
dict_p = dict(zip(range(size), progresses))
p = 0
while len(dict_p) > 0:
for i in range(p, size):
dict_p[i] += speeds[i]
count = 0
if dict_p[p] >= 100:
i = p
while i < size and dict_p[i] >= 100:
dict_p.pop(i)
i += 1
p += 1
count += 1
answer.append(count)
return answer
import kotlin.math.ceil
class Solution {
fun solution(progresses: IntArray, speeds: IntArray): IntArray {
val workDays = IntArray(progresses.size) { i ->
ceil((100 - progresses[i]) / speeds[i].toDouble()).toInt()
}
val answer = mutableListOf<Int>()
var p = 0
var count = 0
for(i in workDays.indices) {
if(workDays[p] >= workDays[i]) {
count += 1
} else {
answer.add(count)
p = i
count = 1
}
}
answer.add(count)
return answer.toIntArray()
}
}
dict.pop('key')
del dict['key']
import kotlin.math.ceil
round() // 반올림 - Double
ceil() // 올림 - Double
floor() // 내림 - Double