반응형
문제 링크 : 2512번: 예산 (acmicpc.net)
2512번: 예산
첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상
www.acmicpc.net
> 풀이
간단한 이분탐색 문제입니다
#include <bits/stdc++.h>
using namespace std;
int arr[10000];
int N, M;
int bSearch(int end)
{
int start = 0;
int sum = 0;
int cost = 0;
while (start <= end) {
sum = 0;
cost = (start + end) / 2;
for (int i = 0; i < N; i++) {
if (arr[i] < cost)
sum += arr[i];
else
sum += cost;
}
if (sum <= M) {
start = cost + 1;
}
else {
end = cost - 1;
}
}
return end;
}
int main(void)
{
scanf("%d", &N);
for (int i = 0; i < N; i++)
scanf("%d", &arr[i]);
scanf("%d", &M);
sort(arr, arr + N);
printf("%d", bSearch(arr[N - 1]));
return 0;
}
반응형
'알고리즘 (백준) > BOJ 길라잡이 (1)' 카테고리의 다른 글
백준 1715 (카드 정렬하기) / C++ (0) | 2021.05.14 |
---|---|
백준 2805 (나무 자르기) / C++ (0) | 2021.05.13 |
백준 1654 (랜선 자르기) / C++ (0) | 2021.05.12 |
백준 1012 (유기농 배추) / C++ (0) | 2020.11.06 |
백준 11047 (동전 0) / C++ (0) | 2020.11.06 |