1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

#include #include #include #include using namespace std; int parametric_search(vector<int> &rocks, int n, int dist) { int prev_distance = 0, count = 0; for(int i = 0; i < rocks.size(); i++) { if(rocks[i] - prev_distance >= dist) prev_distance = rocks[i]; else ++count; } return (count > n); } int solution(int distance, vector<int> rocks, int n) { int answer = 0; rocks.push_back(distance); sort(rocks.begin(), rocks.end()); int l = 0, r = distance; while(l <= r) { int mid = (l + r) / 2; if(parametric_search(rocks, n, mid)) r = mid - 1; else { l = mid + 1; } } return r; }


<= 인지 < 인지도 헷갈리고 반환하는게 r인지 l인지도 헷갈림

많이풀다보면 판단이 되겠지