728x90
# [level 3] 입국심사 - 43238
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/43238)
### 성능 요약
메모리: 99.7 MB, 시간: 107.77 ms
import java.util.*;
class Solution {
public long solution(int n, int[] times) {
long answer = 0;
Arrays.sort(times);
// 이분탐색 기준은 모든 인원이 입국심사를 받는데 걸리는 시간
// 1분 동안 모든 인원이 입국심사를 전부 받았나? -> X
// 2분 동안 모든 인원이 입국심사를 전부 받았나? -> X
// 3분 동안 모든 인원이 입국심사를 전부 받았나? -> O
// 4분 동안 모든 인원이 입국심사를 전부 받았나? -> O
// 5분 동안 모든 인원이 입국심사를 전부 받았나? -> O
// 의 형태를 띄기때문에 이분탐색으로 풀이 가능
long left = 1;
long right = times[0] * (long)n; // 가장 오래 걸리는 경우 (심사하는데 걸리는 시간이 가장 긴 시간 * 입국신사 기다리는 사람의 수)
long mid = (left + right)/2;
while (left <= right){
if(isAllPass(mid, n , times)){ // mid 시간내에 모든인원이 입국심사를 받았는지 확인
// 받았다면 더 짧은 시간 범위를 확인
right = mid -1 ;
answer = mid;
}else{
// 못받았다면 시간을 늘려서 더 긴 시간 범위 확인
left = mid +1;
}
mid = (left + right)/2;
}
return answer;
}
public boolean isAllPass(long time, int n, int[] times){
int pass = 0;
for(int i = 0; i < times.length; i ++){
pass += time/times[i];
if(pass >= n){
return true;
}
}
return false;
}
}
반응형
'Algorithm > 99클럽 코테 스터디' 카테고리의 다른 글
99클럽 코테 스터디 15일차 TIL /[프로그래머스] 소수찾기 (0) | 2024.08.05 |
---|---|
99클럽 코테 스터디 11일차 TIL /[프로그래머스]가장 큰 수 (0) | 2024.08.01 |
99클럽 코테 스터디 10일차 TIL /[백준]최대힙 (0) | 2024.07.31 |
99클럽 코테 스터디 9일차 TIL / [백준] 최소힙 (0) | 2024.07.31 |
99클럽 코테 스터디 8일차 TIL [프로그래머스] 두 큐 합 같게 만들기 (0) | 2024.07.29 |