3100. Water Bottles II
2024. 4. 5. 08:33ㆍAlgorithm/Leetcode, Lintcode, HackerRank, etc.
- 목차
반응형
numBottles와 numExchange가 주어짐
numBottles 개수 만큼의 병을 모두 마시고 empty 개수를 마신만큼 증가 시키며 마신 것의 개수를 증가 시킬 수 있음
혹은 empty 개수가 numExchange 이상인 경우 numExchange 개수 만큼의 empty 개수로 numBottles 하나를 증가하고 numExchange도 하나 증가할 수 있음
이렇게 해서 마신 개수가 최대가 되는 값을 찾기
class Solution:
def maxBottlesDrunk(self, numBottles: int, numExchange: int) -> int:
def dfs(full, empty, exchange, drunk, mx):
if full == 0 and empty < exchange:
mx[0] = max(mx[0], drunk)
return
if full > 0:
dfs(0, empty + full, exchange, drunk + full, mx)
if empty >= exchange:
dfs(full + 1, empty - exchange, exchange + 1, drunk, mx)
mx = [0]
dfs(numBottles, 0, numExchange, 0, mx)
return mx[0]
반응형
'Algorithm > Leetcode, Lintcode, HackerRank, etc.' 카테고리의 다른 글
2717. Semi-Ordered Permutation (0) | 2023.06.05 |
---|---|
2541. Minimum Operations to Make Array Equal II (0) | 2023.01.29 |
2545. Sort the Students by Their Kth Score (0) | 2023.01.29 |
2544. Alternating Digit Sum (0) | 2023.01.28 |
2255. Count Prefixes of a Given String (0) | 2023.01.26 |