[프로그래머스/C++] 입국심사

최대 1 분 소요

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;
}



4. 풀이하면서 고민했던 점


5. 문제를 풀고 알게된 개념 및 소감