[프로그래머스/C++] 입국심사
1.문제 링크
2. 풀이 전 계획과 생각
- 이분탐색
3. 풀이
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
long long solution(int n, vector<int> times) {
long long answer = 0;
sort(times.begin(), times.end());
long long start = 1;
long long end = (long long) times[times.size()-1] * n;
long long mid;
while(start <= end) {
// 중앙값
mid = (start + end) / 2;
// mid 시간동안 심사 처리할 수 있는 모든 사람 수
long long cnt = 0;
for(int i = 0; i < times.size(); i++) {
cnt += mid / times[i];
}
if(cnt < n) {
start = mid + 1;
}
else {
answer = mid;
end = mid - 1;
}
}
return answer;
}