프로그래밍/알고리즘

매개변수 탐색

Mt.Hwang 2025. 4. 10. 15:48

 * 매개변수 탐색 (Parametric Search)

조건을 만족하는 최대값 혹은 최소값을 이분탐색을 찾을 때 사용

주어진 문제를 결정 문제로 바꾸고, 결정 문제의 조건을 만족하는 최적의 값 탐색

..~~~~..

 * 결정 문제

조건에 대한 답이 yes or no인 문제

..~~~~~..

 * 매개변수 탐색 조건

 1. 결정 문제로 바꿀 수 있어야 함  // 조건 검사 함수 check()
 2. 탐색 대상은 배열이 아니라 범위여야 함
 3. low, high를 범위로 잡고 mid에 대해 조건을 만족하는지 확인 // if(check(mid))

ex)
이진 탐색을 하면서 최대값인 mid 값을 찾을 때
if (check()) -> 최대값을 찾는 탐색 실행
if (check() != true) -> 왼쪽으로 탐색

..~~~~~..

 * 매개변수 탐색에서의 루프

int low = 최소값
int max = 최대값

while (low <= max) {
 int mid = (low+high)/2

 if (check())
  low = mid + 1
 else
  high = mid - 1

..~~~~~..