빈병 a개를 가져다주면 콜라 b병을 주는 마트가 있을 때, n개를 가져다주면 몇 병을 받을 수 있는지 계산하는 문제이다.
콜라 n개를 가지고 있을 때, 마트에 (n/a)a개를 가져가서, (n/a)b병의 콜라를 받는다. 남은 콜라는 받은 콜라의 수와 가져가지 않은 콜라의 수의 합이다. 이를 남은 콜라의 수가 a개 이상인 동안 반복한다.
class Cola {
public int solution(int a, int b, int n) {
int answer = 0;
while (n >= a) {
answer += n/a*b; // 받은 콜라 수 answer에 +
n = n/a*b + n%a; // 수중에 남은 콜라 수 계산
}
return answer;
}
}