
문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
어린 Bobby는 초콜릿을 사랑한다. 초콜릿을 사기 위해 5 & 10 상점인 Penny Auntie 자주 갔다. Penny Auntie에서 프로모션을 하고 있다. 만약 Bobby가 충분한 포장지가 있다면, 무료로 초콜릿으로 교환할 수 있다.
n = 15
c = 3
m = 2
그는 15를 사용할 수 있고, 초콜릿의 가격은 3이고, 2개의 포장지를 사용해서 초콜릿으로 교환할 수 있다. 처음에 5개의 초콜릿을 사서 먹은 후에 5개의 포장지를 가지고 있다. 그는 초콜릿 2개를 교환하기 위해 포장지를 1개를 남기고 4개의 포장지를 사용한다. 두 개의 초콜릿을 먹은 후에 3개의 포장지를 가지고 있다. 그리고 2개의 포장지를 사용해서 새로운 초콜릿으로 교환했다. 한 번 더 초콜릿 하나를 먹고 포장지 2개를 사용해서 또 다른 초콜릿으로 교환했다. 초콜릿 한 개를 먹고 포장지 1개가 남고 끝나게 된다. 종합하면 그는 5 + 2 + 1 + 1 = 9개의 초콜릿을 먹었다.
howManyGames 함수를 완성해라.
howManyGames 함수는 아래와 같은 매개변수를 가지고 있다.
처음에 초콜릿을 교환한 개수와 포장지의 개수를 담아 둘 변수와 값을 할당한다.
int bars = n / c;
int wrappers = bars; // 처음에는 초콜릿 개수가 포장지 개수
while문을 사용해서 포장지가 교환할 수 있는 포장지 개수보다 크거나 같을 때까지 반복한다.
while(wrappers >= m){
// 포장지로 교환한 초콜릿 개수를 더한다.
bars += wrappers / m;
// 교환한 초콜릿과 교환후 남은 포장지의 개수를 더해서 포장지에 할당
wrappers = wrappers / m + wrappers % m;
}
마지막은 역시 bars를 반환한다.
return bars;
public static int chocolateFeast(int n, int c, int m) {
int bars = n / c;
int wrappers = bars;
while(wrappers >= m){
bars += wrappers / m;
wrappers = wrappers / m + wrappers % m;
}
return bars;
}