반응형
1. 문제 정의
2. 문제 접근
처음에는 queue를 사용하여 각각의 심사대를 queue로 정의해서 빼려고 했으나 그럼 공간복잡도가 너무 많이 나올 것 같아서 찾아보니 이분법으로도 해결이 가능해 보였다.
3. 문제 풀이
- 두 포인트를 지정한다.
- 두 포인트의 중앙을 구하여 몇명이 통과 가능한지를 정한다.
- 계속 범위를 좁혀나간다.
4. 코드
import java.util.*;
class Solution {
public long solution(int n, int[] times) {
long answer = 0;
Arrays.sort(times);
long l = 0;
long r = times[times.length-1] * (long) n; // 모든 사람이 다 천천히 받을 때
while(l <= r){
long mid = l + (r-l)/2;
long complete = 0;
for(int i = 0; i < times.length; i++){
complete += mid / times[i];
}
if(complete < n){ // 모든 사람이 제시간안에 다 심사를 받는다.
l = mid + 1;
} else { // 모든 사람이 다 심사를 받지만, 더 최솟값이 있을 수도 있다.
r = mid - 1;
answer = mid;
}
}
return answer;
}
}
5. 회고
처음에는 Queue로 해보려다가 공간복잡도가 너무 올라갈 것 같아서 포기했다. 실제로 이런 알고리즘이 입국심사대에 이용하고 있을지도 모른다는 생각이 들었다.
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
99클럽 코테 스터디 22일차 TIL, 그래프(가장 먼 노드) (0) | 2024.06.12 |
---|---|
99클럽 코테 스터디 15일차 TIL, 탐욕법(구명보트) (0) | 2024.06.05 |
99클럽 코테 스터디 6일차 TIL, 정렬(H-Index) (0) | 2024.05.27 |
99클럽 코테 스터디 3일차 TIL, Heap(더 맵게) (0) | 2024.05.24 |
99클럽 코테 스터디 2일차 TIL, Stack(올바른 괄호) (0) | 2024.05.23 |