JuSeok

4796번

문제

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

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

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

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

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

문제 해결 순서

  1. 그리디 유형의 문제.
  2. 먼저 휴가중에 캠핑장을 가서 최대 일수로 즐길 수 있는 횟수를 구한다. (V % P)
  3. 만약 남은 일수가 캠핑장 운영일수 보다 작으면, (V / P * L) + (V % P)
  4. 반대로 남은 일수가 캠핑장 운영일수 보다 크면, 캠핑장 운영일수를 더한다.
  5. 예로 4, 20, 30 이 들어오면 30일 휴가기간중 캠핑장은 한번 갈 수 있고, 4일을 즐길 수 있다. 남은 일수가 10으로 캠핑장 운영일수 4보다 크므로 4 + 캠핑장 운영일수(4)를 해서 8이 된다.
iimport java.io.BufferedReader;
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int answer = 0;
        int i = 0;
        while(true){
            i++;
            answer = 0;
            int L = scan.nextInt();
            int P = scan.nextInt();
            int V = scan.nextInt();

            if(L == 0 && P == 0 && V == 0){
                break;
            }
            else{
                if(V % P < L){
                    answer = (V / P * L) + (V % P);
                    System.out.println("Case " + i + ": " + answer);
                }
                else{
                    while(V > P){
                        V = V - P;
                        answer += L;
                    }
                    System.out.println("Case " + i + ": " + (answer + L));
                }
            }
        }
    }
}

Tags