[프로그래머스] 코딩테스트 연습 - 연습문제 Level 4 선입 선출 스케줄링

Solution.java

class Solution {
    public int solution(int n, int[] cores) {
        int answer = 0;
        
        int left = 0, right = 1000000000, mid;
        int time = 0;
        while (left <= right) {
            mid = (left + right) / 2;
            
            int tmp = 0;
            for (int core : cores) {
                tmp += mid / core;
            }
            
            if (tmp < n) {
                left = mid + 1;
            }
            else {
                time = mid;
                right = mid - 1;
            }
        }
        
        answer = 0;
        for (int i = 1; i < cores.length; i++) {
            if (time % cores[i] == 0) {
                answer = i;
            }
        }
        answer++;
        
        return answer;
    }
}

작업이 끝나는 시간은 구했는데 어느 코어가 마지막 작업을 했는지 알 수가 없었다.

다음에 다시 풀어봐야겠다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

좋은 웹페이지 즐겨찾기