본문 바로가기
학부공부/Algorithm PS_알고리즘

03.01. 캠핑[Greedy Algorithm][백준 4796]

by sonpang 2021. 11. 3.
반응형

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

 

4796번: 캠핑

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

www.acmicpc.net

 

Algorithm classification : Greedy Algorithm, Math

03.01.1. Problem

Kang-San Kim is with his family. It has a reasonable price. Only available for 10 days out of 20 consecutive days. Kang San has just taken a 28-day vacation. Would you like to go shopping for Kang San during the vacation? I want strong acids to generalize a bit more. Of the P days that the chapter continues, only L days. Kang San enjoyed her vacation to the fullest. Kang San Yi for the shortest period of time? (1 < L < P < V)

 

03.01.2. Input limit

The input consists of several test cases. Each test case consists of a single line and contains L, P, V in that order. All input integers are int range. Three zeros are given in the last line.

 

03.01.3. Output

For each test case, the maximum number of days that Sani Kang can use the campground is printed as an example output.

 

03.01.4. Solution

매우쉬운 문제죠. 월급을 가능한 빨리 받고 싶은 것처럼 사용가능한 날 중 가장 빨리 기간을 잡고 사용하면 됩니다. 그러면 L일 동안 캠핑하고 P-L일 동안 못하고를 반복하게 되죠. 어쨋거나 P일씩 구간을 잡는 것이니 Greedy choice property를 만족합니다. 앞의 P일 동안 선택을 어떻게 하더라도 P일 이후의 선택에 영향을 주지 않기 때문입니다.

	for(i = 1;;i++){
		scanf("%d %d %d", &l, &p, &v);
		if(l * p * v == 0) break;
		printf("Case %d: %d\n", i, v/p*l + (v%p > l ? l : v%p));
	}

 

반응형

댓글