⭐️ 이분 탐색 풀이
⭐️ 휴게소 간 최적의 거리를 탐색
자꾸 오차가 발생하면서 일부 테케가 안 맞는데 left, right 범위 설정에 문제가 있는 것 같음
⭐️ 이분 탐색 풀이
작거나 같은
경우에 ans 를 갱신하도록 해야함 그렇지 않으면 m 개를 넘어가는 상황에서 m 개를 충족하지 않는데 간격은 최소값을 갖기 때문에 m 개를 충족하는 값을 찾더라도 정답을 산출할 수 없음 접근한 방법은 맞았지만 left, right 범위 설정이 부족했고 정답을 갱신하는 시점을 잘못 설정
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n,m,l;
cin >> n >> m >> l;
vector<int> v(n+2);
v.push_back(0);
for(int i=0;i<n;i++) {
cin >> v[i];
}
v.push_back(l);
sort(v.begin(),v.end());
int left=1,right=l-1,ans=1000;
while(left<=right) {
int mid=(left+right)/2;
int cnt=0;
for(int i=1;i<v.size();i++) {
cnt+=((v[i]-v[i-1])/mid);
if(cnt>0) {
if((v[i]-v[i-1])%mid==0) cnt-=1;
}
}
if(cnt>m) {
left=mid+1;
}
else {
ans=min(ans,mid);
right=mid-1;
}
}
cout << ans << endl;
}