강산이가 휴가를 써서 캠핑을 하려고 하는데, 캠핑장은 연속되는 P일 중에 L일만 캠핑이 가능하다는 조건이 존재한다. 이 때, 강산이가 V일수 만큼의 휴가를 보낸다면 캠핑을 할 수 있는 일수의 최댓값을 구해라.
입력으로 L(캠핑을 할 수 있는 일 수), P(캠핑장의 조건 일 수), V(강산이의 휴가 기간)이 주어질 때, 최대로 캠핑을 많이 하기 위해서는 V기간동안 L을 최대한 많이 보내야한다.
하지만 L기간을 보낸다면 결국 P기간 만큼 캠핑장을 사용할 수 없기 때문에, L기간을 최대한 많이 사용한다는 말은 결국 V기간안에 P를 몇번 보낼 수 있는지와 같다.
그래서 V를 P로나누고 나온 횟수에 P기간동안 사용할 수 있는 캠핑장 일 수인 L을 곱해주면 된다.
하지만 V를 P로 나누고 난 나머지가 존재하기 때문에 이 나머지 일 수를 처리해야 하는데,
남은 일 수가 만약 L"초과"라면 캠핑장에서 연속으로 사용할 수 있는 기간이 L로 제한되어 있기 때문에 L을 더해주고,
남은 일 수가 L"이하"라면 캠핀장에서 연속으로 사용할 수 있는 기간에 전혀 문제가 되지 않기 때문에 나머지 값을 더해주는 식으로 풀 수 있다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
int i = 0, L = 0, P = 0, V = 0, cnt = 0;
while(true) {
st = new StringTokenizer(br.readLine());
L = Integer.parseInt(st.nextToken());
P = Integer.parseInt(st.nextToken());
V = Integer.parseInt(st.nextToken());
if(L == 0 && P == 0 && V == 0) break;
else {
cnt++;
int camping = V / P * L;
int mod = V % P;
if(mod > L) camping += L;
else if(mod <= L) camping += mod;
System.out.println("Case " + cnt + ": " + camping);
}
}
br.close();
}
}