import java.util.*;
class Solution {
//key: 날짜 , value: 카운트
private static Map<Integer, Integer> map = new TreeMap<>();
public int[] solution(int[] progresses, int[] speeds) {
Queue<Job> jobQueue = new ArrayDeque<>();
for(int i=0 ; i<progresses.length ; i++){
jobQueue.add(new Job(progresses[i], speeds[i]));
}
int currentDay = 1;
List<Integer> answerList = new ArrayList<>();
while(!jobQueue.isEmpty()){
Job job = jobQueue.poll();
if(job.isClear(currentDay)){
map.putIfAbsent(currentDay, 0);
map.put(currentDay, map.get(currentDay)+1);
}else{
currentDay = job.renew(currentDay);
map.putIfAbsent(currentDay, 0);
map.put(currentDay, map.get(currentDay) + 1);
}
}
int[] answer = new int[map.size()];
int idx = 0;
for(Map.Entry<Integer, Integer> entry : map.entrySet()){
answer[idx++] = entry.getValue();
}
return answer;
}
static class Job{
int value;
int speed;
Job(int v, int speed){
this.value = v;
this.speed = speed;
}
public boolean isClear(int currentDay){
int nowProgress = speed * currentDay;//100 * 1
int leftProgress = 100 - (value + nowProgress);
if(leftProgress <= 0) return true;
return false;
}
public int renew(int currentDay){
//15진행율이 남았다 치자 난 스피드가 4이다
//15/4 = 3, 15%4 = 3
//15/5 = 3 15%5 = 0 나머지가 0이면 나누기 그대로 더하면되고, 0아니면 나누기+1하면됨
//15/6 = 2 15%6 = 3
int nowProgress = speed * currentDay;//50 * 1
int leftProgress = 100 - (value + nowProgress);//100 - 51 = 49
if(leftProgress%speed == 0){//6%1==0 49%50 은 49겠네
return currentDay + (leftProgress/speed);
}else{
// if(leftProgress < speed) return currentDay + 1;
return currentDay + (leftProgress/speed + 1);
}
}
}
}