프로틴 음료
문제
1번부터 N번까지 N개의 프로틴 음료가 매장에 나열되어 있다. 각 프로틴 음료에는 1 이상의 단백질이 포함되어 있는데, 각 프로틴 음료의 단백질 함유량은 최대 1,000이다. 구체적으로 각 음료의 단백질 양은 1이상 1,000 이하의 자연수 형태를 가진다.
많은 양의 프로틴 음료를 구매하는 경우 분리수거를 위해 많은 시간이 소요된다. 따라서 너무 많은 개수의 프로틴 음료를 구매하지 않으면서 충분한 단백질을 섭취하는 것이 목표이다. 구체적으로 K개 이하의 프로틴 음료를 구매하여 섭취하고, 총 M 이상의 단백질을 얻고 싶은 상황이다.
단, 여기에 추가적인 조건으로 먹을 프로틴 음료의 수가 홀수 개인 것을 원한다. 결과적으로, 최대 K개 이하이면서 홀수 개에 해당하는 프로틴 음료를 먹되, M 이상의 단백질을 얻을 수 있는 모든 경우(조합)의 수가 총 몇 개인지 계산하는 프로그램을 작성하여라.
예를 들어 N=5, K=3, M=20이면서 각 프로틴 음료에 포함된 단백질의 양이 다음의 표와 같다고 가정해보자.
| 번호 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 단백질 양 | 3 | 7 | 10 | 20 | 21 |
가능한 모든 조합을 고려하면, 현재 예시에서는 12가지 조합이 조건을 만족한다. 구체적으로 (4), (5), (1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 3, 4), (1, 3, 5), (1, 4, 5), (2, 3, 4), (2, 3, 5), (2, 4, 5), (3, 4, 5)에 해당하며, 결과적으로 전체 경우의 수는 총 12개인 것으로 이해할 수 있다. 다음의 표를 참고하자.
| 조합 | 단백질의 양 | |
|---|---|---|
| 1번 | (4) | 20 |
| 2번 | (5) | 21 |
| 3번 | (1, 2, 3) | 20 |
| 4번 | (1, 2, 4) | 30 |
| 5번 | (1, 2, 5) | 31 |
| 6번 | (1, 3, 4) | 33 |
| 7번 | (1, 3, 5) | 34 |
| 8번 | (1, 4, 5) | 44 |
| 9번 | (2, 3, 4) | 37 |
| 10번 | (2, 3, 5) | 38 |
| 11번 | (2, 4, 5) | 48 |
| 12번 | (3, 4, 5) | 51 |
따라서 현재 예시에서는 정답이 12이다.
입출력 예시
예시 1
입력
5, 3, 20, [3, 7, 10, 20, 21]
출력
12
예시 2
입력
7, 5, 200, [55, 78, 70, 72, 62, 91, 37]
출력
39
입력 조건
가장 먼저 프로틴 음료의 수 N이 주어진다. N은 9보다 작거나 같은 자연수이다.
이어서 최대로 구매할 수 있는 프로틴 음료의 수 K가 주어진다. K는 N보다 작거나 같은 자연수다.
이어서 섭취해야 할 단백질의 양 M이 주어진다. 최소 M 이상의 단백질을 섭취해야 하며, M은 10,000보다 작거나 같은 자연수이다.
이어서 1번부터 N번까지 차례대로 N개의 각 프로틴 음료에 포함된 단백질 함유량에 대한 정보를 담고 있는 배열 arr가 주어진다. 각 프로틴 음료에 포함된 단백질의 양은 1이상 1,000 이하의 자연수이다.
출력 조건
최대 K개 이하의 프로틴 음료를 먹되, 홀수 개만 섭취한다고 했을 때, M 이상의 단백질을 얻을 수 있는 모든 경우(조합)의 수를 반환한다. 조건을 만족하는 경우가 없다면 0을 반환한다.
요구사항
- solution(N, K, M, arr) 함수를 만들고 답을 반환해야 합니다
- 쓸 수 있는 말은 파이썬, 자바스크립트입니다
- 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
- 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
- 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
- 출력이 글자 하나까지 기대값과 같아야 합니다. 줄 안의 빈칸은 다른 글자와 똑같이 봅니다.
- 케이스는 18개이고, 그 가운데 5개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
- 케이스 18개를 전부 통과해야 해결입니다.
예시
공개 케이스 5개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 18개를 전부 통과해야 해결입니다.
5, 3, 20, [3, 7, 10, 20, 21]
12
7, 5, 200, [55, 78, 70, 72, 62, 91, 37]
39
1, 1, 601, [436]
0
3, 2, 3401, [867, 70, 899]
0
8, 7, 4658, [763, 297, 876, 709, 574, 797, 667, 32]
1
참고 사항
풀이에 도움이 되는 배경입니다. 지켜야 하는 규격은 위의 입출력 조건과 요구사항에 있습니다.
원본에서 모의고사 9회 2번입니다.
풀이
코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.
제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.
공개 케이스 5개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.
이 문제를 푼 사람
아직 없습니다. 첫 번째가 되실 수 있습니다.