문제 링크입니다: https://www.acmicpc.net/problem/11923
간단한 탐색 문제였습니다.
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX = 1000 + 1;
int N, C;
int result;
int fruit[MAX];
void maxFruit(int idx, int cnt, int total)
{
//조건 만족
if (total >= 0)
result = max(result, cnt);
//기저 사례
if (idx > N || total < 0)
return;
//다음 과일을 먹을 수 있으면 무조건 먹는다
if (total - fruit[idx] >= 0)
maxFruit(idx + 1, cnt + 1, total - fruit[idx]);
//먹을 수 없는 경우에만 건너뛴다
else
maxFruit(idx + 1, cnt, total);
}
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N >> C;
for (int i = 1; i <= N; i++)
cin >> fruit[i];
for (int i = 1; i <= N; i++)
maxFruit(i, 0, C);
cout << result << "\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 10709번 기상캐스터 (0) | 2018.09.27 |
---|---|
백준 11922번 BELA (0) | 2018.09.27 |
백준 11924번 PIANINO (0) | 2018.09.27 |
백준 1302번 베스트셀러 (0) | 2018.09.26 |
백준 1568번 새 (0) | 2018.09.26 |