본문으로 이동
코드패스 by Devin.KR

문제 4921 · 킬로 IV

빈틈없는 운동 시간

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

한 헬스장은 예약한 운동 시간을 정확히 채우는 개인 운동표를 제공한다. 담당자는 회원에게 제안할 수 있는 운동 항목을 N개 준비했다. 각 항목에는 필요한 시간과 운동 효과 점수가 정수로 적혀 있다. 회원은 이 항목 중 일부를 골라 운동표를 만들며, 선택한 항목의 효과 점수를 모두 더한 값을 운동표의 점수로 사용한다. 각 항목은 한 번만 선택할 수 있다. 이름이 비슷하거나 소요 시간과 효과 점수가 모두 같은 항목이 있어도, 입력에서 서로 다른 줄에 주어졌다면 별개의 항목이다. 항목 사이의 준비와 이동에는 시간이 들지 않는다. 선택한 항목을 실행하는 순서도 총시간과 점수에 영향을 주지 않는다. 따라서 같은 항목들을 순서만 바꾸어 배치한 운동표는 같은 선택으로 취급한다. 이번 예약의 운동 시간은 정확히 T분이다. 헬스장은 예약이 끝나기 전에 운동을 마치고 기다리거나, 예약 시간을 넘겨 운동하는 것을 허용하지 않는다. 그러므로 선택한 항목의 소요 시간 합이 T와 정확히 같아야 한다. 각 항목의 소요 시간은 양의 정수이며 T도 양의 정수이므로, 아무 항목도 선택하지 않은 운동표는 조건을 만족하지 않는다. 담당자는 가능한 운동표 중 효과 점수가 가장 큰 운동표를 찾으려 한다. 사용한 항목의 개수가 적다고 해서 더 좋은 운동표가 되는 것은 아니다. 점수가 같은 운동표가 여러 개라면 어느 것을 골라도 되며, 출력에는 선택한 항목이나 그 순서를 포함하지 않는다. 시간이 정확히 맞는 운동표가 하나도 없을 수도 있다. 모든 항목의 정보와 예약 시간이 주어졌을 때, 조건을 만족하는 최대 점수를 구하거나 가능한 운동표가 없다는 사실을 보고해야 한다.

입력

첫째 줄에 항목의 개수 N과 예약 시간 T가 공백으로 구분되어 주어진다. 다음 N개 줄에 각 항목의 소요 시간 a와 효과 점수 b가 공백으로 구분되어 주어진다. 모든 수는 정수이며 1≤N≤20, 1≤T≤1000000, 1≤a≤1000000, 1≤b≤1000000이다.

출력

소요 시간 합이 정확히 T인 선택의 최대 효과 점수를 출력한다. 그러한 선택이 없으면 -1을 출력한다. 최대 점수가 같은 선택이 여러 개여도 그 점수를 한 번만 출력한다.

예제 입력 1

5 12
4 8
8 11
6 14
6 13
3 20

예제 출력 1

27

예제 입력 2

3 7
2 9
4 12
8 30

예제 출력 2

-1

예제 입력 3

4 5
5 7
5 7
2 3
3 4

예제 출력 3

7
힌트 펼치기
  • 각 항목을 선택하는 경우와 선택하지 않는 경우를 나누어 탐색한다. 시간이 이미 T를 넘었다면 이후 항목을 더 선택해도 조건을 만족할 수 없다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류완전 탐색가지치기

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)