특정 개수의 빈 물병을 모아가면 새 물병을 줄 때, 새 물병을 여러개 주고서 물을 총 몇 병 마실 수 있는지 물어보는 문제. 물이 든 병은 받자마자 마셔버린다고 가정하고 새 물병으로의 교환이 불가능해질까지 반복을 돌면 된다.
function maxBottlesDrunk(numBottles: number, numExchange: number): number {
let totalCount = numBottles
let emptyBottles = numBottles
let exchangeCount = numExchange
while(emptyBottles >= exchangeCount) {
emptyBottles = emptyBottles - exchangeCount + 1
totalCount += 1
exchangeCount += 1
}
return totalCount
};
시간복잡도나 예외처리도 딱히 어렵지 않아 손쉽게 클리어.