해당 문제는 여기에서 확인하실 수 있습니다.
콜라 문제는 빈 병의 교환 과정을 반복적으로 시뮬레이션하여 총 받을 수 있는 콜라 병 수를 계산하는 문제입니다. 접근 방법은 먼저 교환 규칙을 분석하여 빈 병의 개수와 교환 비율을 기반으로 새로운 콜라 병을 받을 수 있는 조건을 도출하는 것입니다.
문제를 해결하기 위해 초기 빈 병의 개수를 기준으로 교환 가능한 콜라 병의 개수를 계산합니다. 이때, 빈 병의 개수는 나눗셈 연산을 사용하여 교환 가능한 병 수와 나머지 빈 병을 구합니다. 교환으로 얻은 콜라 병의 개수를 누적하면서 현재 빈 병의 개수를 갱신합니다.
이러한 과정은 교환 최소 조건인 a보다 빈 병의 개수가 작아질 때까지 반복됩니다. 최종적으로 교환을 통해 획득한 콜라 병 수를 모두 더하여 문제의 해답을 도출합니다.
class Solution {
public int solution(int a, int b, int n) {
int answer = 0; // 총 받은 콜라 병 수를 저장할 변수
while (n >= a) { // 빈 병이 교환 가능한 개수 이상일 동안 반복
int exchange = (n / a) * b; // 교환으로 얻은 콜라 병 수 계산
n = (n % a) + exchange; // 남은 빈 병 수와 새로 얻은 병 수 갱신
answer += exchange; // 받은 콜라 병 수를 누적
}
return answer; // 최종적으로 받은 콜라 병 수 반환
}
}