알고리즘

[Lv_2] 기능 개발

deedee2 2023. 11. 21. 21:46
728x90
import java.util.*;
import java.util.stream.*;

class Solution {    
    public int[] solution(int[] progresses, int[] speeds) {
        List<Integer> answer = new ArrayList<>();
        
        Queue<Integer> queue = new LinkedList<>();
        for (int num : progresses) {
            queue.offer(num);
        }
        
        int day = 0;
        int index = 0;

        while (queue.size() > 0) {
        	// 진행 날짜 변수
            day++;
            // 처리 개수 변수
            int removed = 0;
            
            while (true) {
         		// speeds index 초과 시 탈출
                if (index >= speeds.length) {
                    break;
                }
                
                int inc = day * speeds[index];
                // 오늘 자 progress 진행상태 확인
                int progress = queue.peek() + inc;

                if (progress >= 100) {
                	// 완료 시 제거
                    queue.remove();
                    index++;
                    removed++;
                    continue;
                }

                break;
            }
            
            // 오늘 처리된 값 확인
            if (removed > 0) {
                answer.add(removed);
            }
        }
        
        return answer.stream().mapToInt(Integer::intValue).toArray();
    }
}

 

✔️ 링크 : 코딩테스트 연습 - 기능개발 | 프로그래머스 스쿨 (programmers.co.kr)