자바 코테 스터디 모음

밀루·2023년 6월 19일
0

백준 문제풀이

목록 보기
48/51

[스택/큐] 기능개발 (lv2)

기능개발

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        List<Integer> ans = new ArrayList<Integer>();
        int[] dev = new int[progresses.length];
        Queue<Integer> queue = new LinkedList<>();
        
        // 개발 완료까지 필요 일수 계산
        for (int i=0; i<progresses.length; i++) {
            int progress = progresses[i];
            int day = 0;

            while (true) {
                progress += speeds[i];
                day++;
                if (progress >= 100) {
                    break;
                }
            }

            dev[i] = day;
            queue.offer(day);
        }
        
        
        int tmp = 0;
        int count = 0;
        
        while (!queue.isEmpty()) {
            if (tmp >= queue.peek()) {
                queue.poll();
            } else {
                tmp = queue.poll();
            }
            count++;
            
            if (queue.isEmpty()) { // 마지막 값이라면
                ans.add(count);
            } else if (queue.peek() > tmp) {
                // 뒷 값이 더 큰 경우
                ans.add(count);
                count = 0;
                tmp = 0;
            }
            
        }
        
        return ans.stream().mapToInt(i->i).toArray();
    }
}
profile
벨로그에 틀린 코드나 개선할 내용이 있을 수 있습니다. 지적은 언제나 환영합니다.

0개의 댓글