#include <string> #include <vector> #include <algorithm> #include <iostream> using namespace std; long long cal(vector<int> times, long long mid) { long long peopleCnt = 0; for(int i = 0; i < times.size(); i++) { if(times[i] > mid) { break; } peopleCnt += mid / times[i]; } return peopleCnt; } long long solution(int n, vector<int> times) { long long Min = 200000000000000; sort(times.begin(), times.end()); long long left = 1; long long right = (long long)times[times.size()-1] * n; while(left <= right) { long long mid = (left + right) / 2; long long peopleCnt = cal(times, mid); if(peopleCnt >= n) { right = mid-1; if(mid < Min) { Min = mid; } } else if(peopleCnt < n) { left = mid+1; } } return Min; } | cs |
'Programmers > Level 3' 카테고리의 다른 글
[프로그래머스 3] 순위 (C/C++) (★★) (0) | 2020.02.05 |
---|---|
[프로그래머스 3] 가장 먼 노드 (C/C++) (0) | 2020.02.05 |
[프로그래머스 3] 예산 (C/C++) (0) | 2020.01.26 |
[프로그래머스 3] 등굣길 (C/C++) (0) | 2020.01.14 |
[프로그래머스 3] 타일 장식물 (C/C++) (0) | 2020.01.11 |