728x90
반응형
class Solution {
public int solution(int[] diffs, int[] times, long limit) {
int answer = level(diffs, times, limit);
return answer;
}
public long calculate(int[] diffs, int[] times, long limit, int level) {
long time = 0;
int answer = 0;
for(int i=0; i<diffs.length; i++) {
if(diffs[i] <= level) {
time += times[i];
} else {
int fail = diffs[i] - level;
int tmp = (times[i] + times[i-1]) * fail + times[i];
time += tmp;
}
}
return time;
}
public int level(int[] diffs, int[] times, long limit) {
int min = 1;
int max = 100000;
while(min<=max) {
int level = (min + max) / 2;
long time = calculate(diffs, times, limit, level);
if(time > limit) {
min = level + 1;
} else {
max = level - 1;
}
}
return max+1;
}
}
728x90
반응형
'Coding Test > Programmers' 카테고리의 다른 글
[JAVA][Programmers] 정렬 - K번째수 (0) | 2025.02.04 |
---|---|
[JAVA][Programmers] 정렬 - 가장 큰 수 (0) | 2025.02.04 |
[JAVA][Programmers] 해시 - 폰켓몬 (2) | 2025.02.04 |
[JAVA][Programmers] 해시 - 완주하지 못한 선수 (0) | 2025.02.04 |
[JAVA][Programmers][PCCP 기출문제] 1번 / 동영상 재생기 🌟🌟 (1) | 2025.02.03 |