문제
세 재료가 각각 a, b, c만큼 있고, 레시피 비율이 i:j:k일 때 최대한 칵테일을 만든 후 남는 재료의 양을 구하라.
입력
첫째 줄에 재료의 양 a, b, c, 둘째 줄에 레시피 비율 i, j, k가 주어진다.
출력
각 재료의 남는 양을 공백으로 구분하여 출력한다.
예제
| 입력 | 출력 |
|---|---|
10 20 30 1 2 3 | 0.0 0.0 0.0 |
풀이
비율 대비 가용량의 최솟값으로 최대 제조량을 구하고 잔량을 계산한다.
- 각 재료에 대해
가용량 / 비율을 계산한다 - 세 값의 최솟값 t가 만들 수 있는 최대 배수이다
- 각 재료의 남은 양은
가용량 - 비율 * t이다
핵심 아이디어: 병목 재료(비율 대비 가장 적은 재료)가 총 제조량을 결정하므로, min(a/i, b/j, c/k)로 최대 배수를 구한다.
코드
a, b, c = map(int, input().split())
i, j, k = map(int, input().split())
t = min(a / i, b / j, c / k)
print(a - i * t, b - j * t, c - k * t)복잡도
- 시간: O(1)
- 공간: O(1)