ex)
특정 상황을 만족하는 최소 or 최대를 구해라
-> 최소 or 최대 후보 중에서 조건 만족하는 후보 찾기
➡️ Binary Search로 문제 해결
ex)
프로그래머스 징검다리 문제
출발지점과 도착지점 사이에 바위 존재 -> 바위를 n개 만큼 제거
바위 간 거리의 최소값들 중에서 최대값을 찾는다
mid를 바위 사이 거리의 최소값으로 설정
int start=0;
int end=distance; // 도착 지점
while(start<=end)
{
// mid는 돌과 돌 사이 거리의 최소값
int mid=(start+end)/2;
int preRock=0;
int cnt=0;
for(int i=0;i<rocks.size();i++)
{
// 최소값 보다 작을 수 없음 -> 바위 제거
if(rocks[i]-preRock<mid)
cnt++;
else
preRock=rocks[i];
}
// 마지막 바위에서 도착지점까지 거리
if(distance-preRock<mid)
cnt++;
if(cnt>n)
end=mid-1;
else
{
answer=max(answer,mid);
start=mid+1;
}
}