Search
Duplicate

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

생성일
2024/09/05 09:41
태그
url

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

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

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))
Python
복사
방법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))
Python
복사

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]