문제 4006 · 바이트 V
생산 라인의 시험 운전표
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 공장의 생산 라인은 시험 운전에서 두 가지 작업 모드를 사용할 수 있다. 첫 번째 모드를 한 번 실행하면 부품 A개가 나오고, 두 번째 모드를 한 번 실행하면 부품 B개가 나온다. 각 모드는 정해진 작업을 끝까지 실행해야 하므로 실행 횟수는 음이 아닌 정수여야 한다. 시험 운전에서는 두 모드의 실행 횟수를 합하여 최대 K번까지만 실행할 수 있다. 담당자는 목표 생산량 T개에 최대한 가까운 시험 운전표를 만들려고 한다. 첫 번째 모드를 x번, 두 번째 모드를 y번 실행하는 운전표의 생산량은 A×x+B×y개다. 목표보다 적게 생산하는 운전표와 많이 생산하는 운전표를 모두 허용한다. 운전표의 오차는 생산량과 목표 생산량의 차이의 절댓값이다. 따라서 목표보다 3개 적게 생산하는 경우와 3개 많이 생산하는 경우의 오차는 모두 3이다. 운전표는 다음 우선순위에 따라 하나를 선택한다. 먼저 오차가 가장 작은 운전표를 고른다. 그러한 운전표가 여러 개라면 전체 실행 횟수 x+y가 가장 작은 것을 고른다. 오차와 전체 실행 횟수까지 같다면 첫 번째 모드의 실행 횟수 x가 가장 작은 것을 고른다. 이 기준을 모두 적용하면 선택되는 x와 y는 유일하다. 모드를 실행하는 순서는 고려하지 않으며 실행 횟수만 비교한다. 아무 모드도 실행하지 않는 운전표도 허용한다. 이때 x와 y는 모두 0이고 생산량도 0이다. 따라서 어떤 입력에서도 가능한 운전표가 적어도 하나 존재한다. 두 모드의 한 번당 생산량이 서로 같아도 모드 번호와 동점 처리 기준은 그대로 유지된다. 주어진 생산량과 실행 제한을 바탕으로 선택되는 두 실행 횟수와 그 운전표의 오차를 구하는 프로그램을 작성한다.
입력
첫째 줄에 정수 A, B, T, K가 공백으로 구분되어 주어진다. 1 ≤ A, B ≤ 10,000, 0 ≤ T ≤ 2,000,000, 0 ≤ K ≤ 200이다. 가능한 운전표의 실행 횟수 x, y는 정수이며 x ≥ 0, y ≥ 0, x+y ≤ K를 만족해야 한다.
출력
선택된 운전표의 첫 번째 모드 실행 횟수 x, 두 번째 모드 실행 횟수 y, 오차를 공백으로 구분하여 한 줄에 출력한다. 동점이면 전체 실행 횟수가 작은 운전표를 우선하고, 그래도 같으면 x가 작은 운전표를 우선한다.
예제 입력 1
4 7 19 4
예제 출력 1
3 1 0
예제 입력 2
5 5 8 2
예제 출력 2
0 2 2
예제 입력 3
9 14 20 0
예제 출력 3
0 0 20
힌트 펼치기
- x를 정한 뒤 0부터 K-x까지의 모든 y를 확인한다.
- 각 운전표를 (오차, 전체 실행 횟수, x)의 순서로 비교한다.
관련 서재 장
알고리즘 분류
완전 탐색구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |