1.문제
There are numBottles water bottles that are initially full of water. You can exchange numExchange empty water bottles from the market with one full water bottle.
The operation of drinking a full water bottle turns it into an empty bottle.
Given the two integers numBottles and numExchange, return the maximum number of water bottles you can drink.
처음에 물이 가득 차 있는 병인 numbottles 가 있다. numExchange만큼의 병을 새로운 물 하나로 바꿀 수 있을 때 한번의 operation에 새 물병 하나를 마셔서 빈 물병으로 만든다고 한다.
numBottles, numExchange 가 주어질 때 마실 수 있는 물병의 수의 최댓값을 리턴하는 문제이다.
Example 1

Input: numBottles = 9, numExchange = 3
Output: 13
Explanation: You can exchange 3 empty bottles to get 1 full water bottle.
Number of water bottles you can drink: 9 + 3 + 1 = 13.
Example 2

Input: numBottles = 15, numExchange = 4
Output: 19
Explanation: You can exchange 4 empty bottles to get 1 full water bottle.
Number of water bottles you can drink: 15 + 3 + 1 = 19.
Constraints:
- 1 <= numBottles <= 100
- 2 <= numExchange <= 100
2.풀이
/**
* @param {number} numBottles
* @param {number} numExchange
* @return {number}
*/
const numWaterBottles = function(numBottles, numExchange) {
let result = 0;
let currentExchange = 0;
while(numBottles > 0) {
// 현재 마실 수 있는 음료 갯수를 더한다
result += numBottles;
// 현재 가지고 있는 빈병의 수 갱신
currentExchange = currentExchange + numBottles;
// 빈병을 새 음료수로 교환한다.
numBottles = Math.floor(currentExchange / numExchange);
// 현재 가지고 있는 빈병의 수를 다시 갱신해준다
currentExchange -= numBottles * numExchange;
}
return result
};
3.결과
