본문 바로가기

알고리즘

[백준] 4796번 캠핑 C++ 문제풀이

https://www.acmicpc.net/problem/4796

 

4796번: 캠핑

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다.

www.acmicpc.net

문제 풀이

그리디 문제였다. 최대한 P일수를 넣은 뒤 V를 P로 나눈 나머지 값만큼을 더해주는데,

V를 P로 나눈 나머지 값이 L보다 큰지 작은지만 확인한다면 어려운 문제는 아니였다.

소스 코드

#include <iostream>
using namespace std;

int main() {
	int cnt = 1;
	while (true) {
		int L, P, V;
		cin >> L >> P >> V;
		if (L == 0 && P == 0 && V == 0) break;
        
		int whole_day = V / P; 
		V = V % P;
		int result = 0;
		if (V > L) { //나눈 나머지 값이 L보다 큰지 작은지를 비교
			result = whole_day * L + L;
		}
		else {
			result = whole_day * L + V;
		}
		cout << "Case " << cnt << ": " << result << '\n';
		cnt += 1;
	}
}