문제/프로그래머스
[프로그래머스] 선입 선출 스케줄링 - Java
icodesiuuuu
2024. 8. 30. 22:25
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12920
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
단순 반복문으로 시도하면 시간 초과 및 효율성 실패가 발생하는 문제
이진탐색으로 해결할 수 있다
import java.util.*;
class Solution {
public int solution(int n, int[] cores) {
int answer = 0;
int min = 0, max = 10_000 * n;
int work = 0, time = 0;
while(max >= min) {
int mid = (max+min)/2;
int cnt = cal(mid, cores);
if(cnt >= n) {
max = mid-1;
time = mid;
work = cnt;
} else {
min = mid+1;
}
}
for(int i=cores.length-1; i>=0; i--) {
if(time%cores[i] == 0) {
if(work == n) {
answer = i+1;
break;
}
work--;
}
}
return answer;
}
public static int cal(int mid, int[] cores) {
int cnt = cores.length;
for(int i=0; i<cores.length; i++) {
cnt += (mid/cores[i]);
}
return cnt;
}
}
이진탐색 추천 문제
https://school.programmers.co.kr/learn/courses/30/lessons/43238
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr