[C++]백준4796번 캠핑

less than 1 minute read

오늘은 백준4796번 캠핑 문제를 풀어보도록 하자.

그리디로 쉬운 편에 속하는 문제이다.

문제는 다음과 같다.

                               [접근법]

  1. L<P<V 이므로 V를 P로 나눈 것을 L과 곱하면 주기적인 값을 구할 수 있다.

  2. V를 P로 나눈 나머지 값이 L보다 큰지 작은지에 따라 temp_P가 L인지 V % P인지 선택할 수 있다.
                                     [코드]
#include <iostream>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	int L, P, V, temp_P, Num = 1;

	while (1) {
		cin >> L >> P >> V;
		if (L == 0 && P == 0 && V == 0) {
			break;
		}

		if (V%P <= L) {
			temp_P = V % P;
		}
		else {
			temp_P = L;
		}
		
		P = V / P;
		cout << "Case " << Num << ":" << " " << L * P + temp_P<< '\n';
		Num++;
	}
	return 0;
}