Algorithm
프로그래머스
Java
기능개발

기능개발

https://school.programmers.co.kr/learn/courses/30/lessons/42586?language=java (opens in a new tab)

풀이

내 풀이 방법은 여기서 daysLeft를 구할 때 loop를 한 번 더 돌렸다. 현재 progresses가 100 이상이 될 때까지. 이 부분을 ceil로 처리하면 더 간단하게 처리할 수 있다.

import java.util.*;
class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        int len = progresses.length;
        int[] daysLeft = new int[len];
        ArrayDeque<Integer> answer = new ArrayDeque<>();
        for(int i = 0; i < len; i ++) {
            daysLeft[i] = (int) Math.ceil((100.0 - progresses[i]) / speeds[i]);
        }
        int count = 0;
        int maxDay = daysLeft[0];
        for(int i = 0; i < len ; i++) {
            if(daysLeft[i] <= maxDay) {
				count++;
            } else {
                answer.addLast(count);
                count = 1;
                maxDay = daysLeft[i];
            }
        }
        answer.addLast(count);
        
        return answer.stream().mapToInt(Integer::intValue).toArray();
    }
}