섬이 있다고 가정해 봅시다. 그 위치에 단 하나의 상점이 있습니다. 이 상점은 일요일을 제외하고 항상 열려 있습니다. 입력으로 다음 값이 있습니다 −
- N(하루에 살 수 있는 최대 음식 수).
- S(생존에 필요한 일수).
- M(생존을 위해 매일 필요한 음식의 수).
월요일이라면 다음 S일 동안 생존해야 합니다. 우리가 생존할 수 있는지 여부를 확인해야 합니다. 식량을 사야 하는 최소 일수를 찾을 수 있다면 다음 S일을 버틸 수 있습니다.
따라서 입력이 S =12, N =24, M =3과 같으면 출력은 True이고 음식을 사야 하는 최소 일수는 2입니다. 우리가 8일 동안 생존할 수 있기 때문입니다(현재 월요일부터 다음 월요일까지) 24단위의 음식을 사용하고 다음 4일 동안 12단위를 다시 구매합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- if (N * 6
6) 또는 M> N, then - 거짓을 반환
- 그렇지 않으면
- count :=(M * S) / N의 몫
- (M * S)가 N으로 나누어지면
- 카운트 :=카운트 + 1
- 참을 반환하고 계산
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(S, N, M): if ((N * 6) < (M * 7) and S > 6) or M > N: return False else: count = (M * S) // N if ((M * S) % N) != 0: count += 1 return (True, count) S = 12 N = 24 M = 3 print(solve(S, N, M))
입력
12, 24, 3
출력
(True, 2)