베시의 체중 문제

면접 대비

시간 제한1초메모리 제한128 MB

요약
N개의 건초 더미 무게와 한도 H가 주어질 때, 각 더미를 최대 한 번씩 골라 H를 넘지 않으면서 만들 수 있는 최대 총 무게를 구한다.
난이도

보통10점 중 4점

유형
동적 계획법, 배열, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

젖소 베시는 다른 자매들처럼 농부 존의 목초지에 있는 맛있는 풀을 너무 많이 즐긴 나머지 살이 조금 쪘습니다. 그래서 존은 베시에게 하루에 건초를 최대 HH (5≤H≤450005 \le H \le 45000) 킬로그램까지만 먹도록 엄격한 식단을 정했습니다.

베시는 건초 더미를 통째로만 먹을 수 있습니다. 한 더미를 먹기 시작하면 중간에 멈출 수 없어 끝까지 다 먹습니다. 베시에게는 오늘 저녁으로 먹을 수 있는 건초 더미 NN (1≤N≤5001 \le N \le 500)개의 목록이 있으며, 당연히 먹는 건초의 총량을 최대로 만들고 싶어 합니다. 각 건초 더미는 최대 한 번만 먹을 수 있습니다. (목록에 같은 무게가 여러 번 나타날 수 있으며, 그런 더미도 각각 한 번씩 먹을 수 있습니다.)

건초 더미들의 무게 WiW_i (1≤Wi≤H1 \le W_i \le H)가 주어질 때, 베시가 제한량 HH 킬로그램을 넘기지 않으면서 먹을 수 있는 건초의 최대 총 무게를 구하세요.

입력

  • 첫째 줄: 공백으로 구분된 두 정수 HH와 NN.
  • 둘째 줄부터 N+1N+1째 줄까지: i+1i+1째 줄에는 건초 더미 ii의 무게를 나타내는 정수 WiW_i가 하나씩 주어집니다.

출력

  • 첫째 줄: 베시가 제한량을 넘기지 않으면서 먹을 수 있는 건초의 최대 킬로그램 수를 나타내는 정수 하나.

힌트

무게가 15, 19, 20, 21인 건초 더미 네 개가 있고 제한량이 56일 때, 베시는 무게 15, 20, 21인 더미를 먹어 15+20+21=5615 + 20 + 21 = 56으로 제한량에 정확히 도달할 수 있습니다.

예제1

  1. 예제 1

    입력
    56 4
    15
    19
    20
    21
    
    예상 출력
    56