코드
#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 min = 1;
long long max = n*(long long)times.front();
while(min <= max){
long long avg = (min + max)/2;
long long tmp = 0;
for(int i = 0; i < times.size(); i++){
tmp += avg/times[i];
}
if(tmp >= n){
max = avg -1;
answer = avg;
}
else min = avg + 1;
}
return answer;
}
알게된 점
이분탐색 테마에 있었음에도 어떻게 푸는지 몰라서 구글링을 했다,,,
그냥 이분탐색 하면 된다.
'하루하나코딩' 카테고리의 다른 글
백준 14501 : 퇴사 c++ (0) | 2023.03.06 |
---|---|
백준 9095 : 1, 2, 3 더하기 c++ (0) | 2023.03.06 |
백준 1654 : 랜선 자르기 python (0) | 2023.02.21 |
백준 18290 : NM과 K(1) c++ (0) | 2023.02.17 |
백준 15657 : N과 M(8) c++ (0) | 2023.02.17 |