문제
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
'문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 보행자 천국 - Java (2) | 2024.09.01 |
---|---|
[프로그래머스] 풍선 터트리기 - Java (0) | 2024.09.01 |
[프로그래머스] 코딩 테스트 공부 - Java (0) | 2024.08.31 |
[프로그래머스] 아이템 줍기 - Java (0) | 2024.08.31 |
[프로그래머스] 표 편집 - Java (0) | 2024.08.29 |