티스토리 뷰

Algorithm/baekjoon

4796_캠핑

js0331 2020. 8. 22. 22:10

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

 

4796번: 캠핑

문제 등산가 김강산은 가족들과 함께 캠핑을 떠났다. 하지만, 캠핑장에는 다음과 같은 경고문이 쓰여 있었다. 캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있습니다. 강산이는 이제 막 28일 �

www.acmicpc.net

문제(시간제한 1초 / 메모리 제한 128MB)

  등산가 김강산은 가족들과 함께 캠핑을 떠났다. 하지만, 캠핑장에는 다음과 같은 경고문이 쓰여 있었다.

  캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있습니다.

  강산이는 이제 막 28일 휴가를 시작했다. 이번 휴가 기간 동안 강산이는 캠핑장을 며칠동안 사용할 수 있을까?

  강산이는 조금 더 일반화해서 문제를 풀려고 한다. 

  캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. 강산이가 캠핑장을 최대 며칠동안 사용할 수 있을까? (1 < L < P < V)

입력

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

출력

  각 테스트 케이스에 대해서, 강산이가 캠핑장을 최대 며칠동안 사용할 수 있는지 예제 출력처럼 출력한다.

예제 입력 1 복사

5 8 20

5 8 17

0 0 0

예제 출력 1 복사

Case 1: 14

Case 2: 11


문제 접근

  L = 연속가능한 일 수 중 최대로 이용가능한 일수 / P = 캠핑장을 연속가능한 일 수 / V = 휴가 일수

  

  간단한 계산 문제 같다. V / P * L 이러고서 V의 휴가 일수가 남는다면 남은 V <= L 이라면 남은 V만큼을 더해준다.

/* 캠핑 */
#include <iostream>

using namespace std;

int L, P, V;

int main(void) {
	int cnt = 1;
	while(1) {
		scanf("%d %d %d", &L, &P, &V);
		if(L == 0 && P == 0 && V == 0) {
			break;
		}
		int sum = 0;
		
		if(V / P) {
			sum += (V / P) * L;
			V -= (V / P) * P;
		}
		
		if(V >= L) {
			sum += L;
		}
		else if(V < L) {
			sum += V;
		}
		printf("Case %d: %d\n", cnt, sum);
		cnt++;
	}
	
	return 0;
}

'Algorithm > baekjoon' 카테고리의 다른 글

13305_주유소  (0) 2020.08.23
2847_게임을 만든 동준이  (0) 2020.08.22
1744_수 묶기  (0) 2020.08.22
10162_전자레인지  (0) 2020.08.21
3109_빵집  (0) 2020.08.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함