티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/42586?language=java

 

코딩테스트 연습 - 기능개발 | 프로그래머스

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇

programmers.co.kr

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        Queue<Integer> queue = new LinkedList<>();
        ArrayList<Integer> answerList = new ArrayList<>();
        int cnt = 0;
        int resultIndex = 0;
        int previousVal = 0;
 
        for(int i = 0; i < progresses.length; i++) {
            int remainder = 100 - progresses[i];
            int workday = remainder % speeds[i] == 0 ? remainder / speeds[i]
                    : remainder / speeds[i] + 1;
            queue.offer(workday);
        }
 
        while(!queue.isEmpty()) {
            int presentVal = queue.poll();
            
            if (previousVal == 0) {
                previousVal = presentVal;
                answerList.add(++cnt);
            } else {
                if (previousVal >= presentVal) {
                    answerList.set(resultIndex, ++cnt);
                } else {
                    previousVal = presentVal;
                    resultIndex++;
                    cnt = 1;
                    answerList.add(cnt);
                }
            }
        }
        return answerList.stream().mapToInt(i -> i).toArray();
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
댓글