[백준/C++]6236번: 용돈관리 (작성중)

Eunho Bae·2022년 4월 2일
0

백준

목록 보기
18/40
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
	ios::sync_with_stdio(0);
	cout.tie(0);
	cin.tie(0);

	int n, m;
	int left=0, right=0;

	cin >> n >> m;

	vector<int> v(n);

	for (int i = 0; i < n; i++)
	{
		cin >> v[i];
		left = max(left, v[i]);
		right += v[i];
	}

	int ans = 0;

	while (left < right)
	{
		int mid = (left + right) / 2; // 최대 인출 금액
		int sum = 0;
		int cnt = 1; // 맨 처음 한번 출금

		for (int i = 0; i < n; i++)
		{
			if (sum + v[i] > mid) // 돈이 부족할 경우
			{
				cnt++; 
				sum = v[i]; // 출금하기
			}
			else 
				sum += v[i];
		}

		if (cnt <= m)
			right = mid;
		else
			left = mid + 1;
	}

	cout << left;

	return 0;
}
profile
개인 공부 정리

0개의 댓글