본문 바로가기
BaekJoon/C++

4796 : 캠핑 (C++)

by GrayChoi 2021. 1. 19.
반응형

 

4796번: 캠핑

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

www.acmicpc.net


그리디 알고리즘을 이용하여 푸는 문제로

총 휴가일 수에서 캠핑장을 이용하는 일수와 연속해서 이용하지 못하는 일의 수를 빼면서 계산하면 된다.

총 휴가일 수에서 캠핑장을 연속으로 이용하는 날의 수를 빼고 그 다음 이용하지 못하는 날을 뺀다.

그 다음 결과값에 캠핑장을 이용한 날을 더하고 총 휴가일의 수가 캠핑장을 이용할 수 있는 일자 보다 작아지면

while문을 나와 총 휴가일의 수가 음수면 더하지 않고 음수가 아니면 결과값에 남은 일의 수를 더한다.

#include<iostream>
using namespace std;

int main() {
    int cnt = 1;
    while(true) {
        int L, P, V;
        int result = 0;

        cin >> L >> P >> V;

        if(L == 0 && P == 0 && V == 0)
            break;

        P -= L;

        while(V >= L) {
            V -= L;
            V -= P;
            result += L;
        }
        if(V > 0) {
            result += V;
        }

        cout << "Case " << cnt++ << ": " << result << endl;
    }
    return 0;
}
반응형

'BaekJoon > C++' 카테고리의 다른 글

1259 : 팰린드롬수 (C++)  (0) 2021.01.20
2810 : 컵홀더 (C++)  (0) 2021.01.19
10799 : 쇠막대기 (C++)  (0) 2021.01.18
2751 : 수 정렬하기 2 (C)  (0) 2021.01.11
2750 : 수 정렬하기 (C)  (0) 2021.01.11

댓글