[프로그래머스] 기능개발 (java)

HaYeong Jang·2021년 3월 27일
0
post-thumbnail

🔗 문제링크

https://programmers.co.kr/learn/courses/30/lessons/42586

👩🏻‍💻 코드

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        int[] answer = new int[progresses.length];

	// 작업 날짜
        Queue<Integer> day = new LinkedList<>();
        for (int i = 0; i < progresses.length; i++) {
            int remain = 100 - progresses[i];
            if (remain % speeds[i] == 0) {
                day.add((100 - progresses[i]) / speeds[i]);
            } else {
                day.add((100 - progresses[i]) / speeds[i] + 1);
            }
        }

	// max: 가장 오래걸리는 날짜, idx: answer 배열의 인덱스
        int max = day.poll();
        int idx = 0;
        answer[idx]++;

        while (!day.isEmpty()) {
            if (day.peek() > max) {
                max = day.peek();
                idx++;
            }
            answer[idx]++;
            day.poll();
        }

        answer = Arrays.copyOf(answer, idx + 1);
        return answer;
    }
}

📝 정리

남은 작업량을 계산하여 가장 오래 걸리는 날짜를 찾아 카운트해 주면 되었다.

profile
기억하기 위해 기록하는 개발로그👣

0개의 댓글