728x90
반응형
- 파라메트릭 서치(Parametric Search) : 최적화 문제를 결정문제(예/아니오)로 바꾸어 해결하는 기법
![](https://blog.kakaocdn.net/dn/KQJ4A/btrU38h68G6/evT6BrDnhqHglAPcvIrCsK/img.png)
![](https://blog.kakaocdn.net/dn/dby4ab/btrU7HEjZIO/9iCCk3BsDsU7p0FBpGUjK0/img.jpg)
![](https://blog.kakaocdn.net/dn/lbvE3/btrU2KIzHmp/3UGHKF6PfhRK2yE5giFkJ1/img.png)
![](https://blog.kakaocdn.net/dn/bAfFdw/btrU3bstdA4/LAyqXIeSGcgUAckiIuJrQ1/img.png)
![](https://blog.kakaocdn.net/dn/bydeM0/btrU01KOKsF/oZHklQSm9Gp8qk3QLTKtUK/img.png)
![](https://blog.kakaocdn.net/dn/bP1QfL/btrU8FsLTJa/soZlOgV016H7SAbnxFdsWK/img.png)
![](https://blog.kakaocdn.net/dn/3PyIe/btrU1M7IZhX/1Jp3x8KfnUQgSO4L4zfkUK/img.png)
![](https://blog.kakaocdn.net/dn/cb9WtV/btrU43AV4yz/r0PWahM3FbSbeixKfDmfjk/img.png)
![](https://blog.kakaocdn.net/dn/4rOfM/btrUWRCbuwG/OWygKz4OCyXpm3cujMrtpk/img.png)
![](https://blog.kakaocdn.net/dn/N8yyi/btrU3atx3G0/zi1Efdtmm6GK1ko7kAUNIk/img.png)
![](https://blog.kakaocdn.net/dn/cx9zAd/btrU1oy2gtN/Qp6YoJc5OgbG9vNz3C7pZ0/img.png)
#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> arr;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for(int i=0; i<n; i++){
int x;
cin >> x;
arr.push_back(x);
}
// 이진 탐색을 위한 시작점과 끝점 설정
int start = 0;
int end = 1e9;
// 이진 탐색 수행(반복적)
int result = 0;
while(start <= end){
long long int total = 0;
int mid = (start + end)/2;
for(int i=0; i<n; i++){
// 잘랐을 때 떡의 양 계산
if(arr[i] > mid) total += arr[i] - mid;
}
if(total < m){ // 떡의 양이 부족할 경우 더 많이 자르기(왼쪽 부분 탐색)
end = mid - 1;
}
else { // 떡의 양이 충분한 경우 덜 자르기(오른쪽 부분 탐색)
result = mid; // 최대한 덜 잘랐을 때가 정답이므로, 여기에서 result 기록
start = mid + 1;
}
}
cout << result << '\n';
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준/이분탐색/C++] 1654번 랜선 자르기 (0) | 2023.01.01 |
---|---|
[이코테/이진탐색/C++] 정렬된 배열에서 특정 수의 개수 구하기(lower_bound, upper_bound 사용) (1) | 2023.01.01 |
[이코테/이진탐색/C++] 이진 탐색 알고리즘 (설명/시간복잡도/예시) (0) | 2023.01.01 |
[백준/BFS/C++] 11725번 트리의 부모 찾기 (0) | 2022.12.31 |
[백준/DP/C++] 1699번 제곱수의합 (0) | 2022.12.31 |