Coding Test/programmers

[Java] 기능 개발 (큐)

Karla Ko 2024. 3. 19. 20:19
728x90

2023.07.05 - [Coding Test/programmers] - 기능 개발 (큐)

 

기능 개발 (큐)

def solution(progresses, speeds): answer = [] cnt = 0 day = 0 while len(progresses)>0: if progresses[0] + day*speeds[0] >= 100: # 완료 progresses.pop(0) speeds.pop(0) cnt+=1 else: # 미완 if cnt>0: # 지금까지 완료한 기능 배포하고 초기화

karla.tistory.com

 

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        Queue<Integer> q = new LinkedList<>();
        for (int i=0; i<progresses.length; i++) {
            q.add(i);
        }
        
        List<Integer> result = new ArrayList<>(); // 동시완료 작업 수
    
        int days = 0; // 현재
        int count = 0; // 동시완료 작업수
        while (!q.isEmpty()) {
            int idx = q.poll();
            int expiration = (int) Math.ceil((double) (100-progresses[idx]) / speeds[idx]); // 작업해야하는일수

            // 이전 작업과 종료되는지, 추가 작업 필요한지
            if (expiration > days) {
                if (days != 0){
                    result.add(count);
                    count = 0;
                }
                days = expiration;
            }
            count++;
        }
        
        result.add(count);
        return result.stream().mapToInt(Integer::intValue).toArray();
    }

}
import java.util.ArrayList;
import java.util.Arrays;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        
        int[] dayOfend = new int[100];
        
        int day = -1;
        for(int i=0; i<progresses.length; i++) {
            while(progresses[i] + (day*speeds[i]) < 100) {
                day++;
            }
            dayOfend[day]++;
        }
        return Arrays.stream(dayOfend).filter(i -> i!=0).toArray();
    }
}

 

 

 

728x90