2024년 9월 5일

파라매트릭 서치 알고리즘 [개념]

 

1. 파라매트릭 서치 알고리즘

  • 파라매트릭 서치 알고리즘은 이분 탐색을 이용하여 답을 구하는 알고리즘이다.
    • 최대값, 최소값을 구하는 문제를 결정 문제로 바꾸어 푸는 알고리즘이다.
 
  • 문제에서 파라매트릭 서치 알고리즘을 사용할 수 있는 경우
    • 결정 문제로 바꾸었을 때, O/X의 형태가 연속적으로 나타나야 한다.
      • notion image
 
 

2. 파라매트릭 서치 구현

  • 방법1
    • def parametric_search(arr): ret = -1 left = 0 right = len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == True: left = mid + 1 ret = mid else: right = mid - 1 return ret arr = [True, True, True, True, True, True, True, True, False, False, False, False] print(parametric_search(arr))
  • 방법2
    • def parametric_search(arr): cur = -1 step = len(arr) while step != 0: while (cur + step < len(arr) and arr[cur + step] == True): cur += step step //= 2 return cur arr = [True, True, True, True, True, True, True, True, False, False, False, False] print(parametric_search(arr))
 

3. 파라매트릭 서치 문제 예제

 

4. 실제 문제에서 파라매트릭 서치 알고리즘

  • 파라매트릭 서치의 특징
    • 파라매트릭 서치는 문제에서 배열이 주어지는 것이 아닌, 상황 자체를 일종의 정렬된 배열처럼 보는 것이다.
    • 따라서, 파라매트릭 서치는 보통 최대값 또는 최소값을 구하는 문제에서 많이 쓰인다.
 
  • 자주 쓰이는 파라매트릭 서치 유형
    • k인 경우에 답이 가능한가? - 최소값, 최대값을 구하는 문제
      • [False, False, False, False, True, True, True]
      • [True, True, True, True, False, False, False]
       
    • k 이하인 경우에 답이 가능한가? - 최소값을 구하는 문제
      • [False, False, False, False, True, True, True]
    • k 이상인 경우에 답이 가능한가? - 최대값을 구하는 문제
      • [True, True, True, True, False, False, False]
 
  • k 일 때의 개수 - 인덱스(몇 번째 인지)를 구하는 문제
    • [3, 5, 5, 7, 7, 8, 9, 10, 10, 11, 13, 14, 15, 19, 19]