[BOJ] 4796 캠핑

iinnuyh_s·2024년 1월 22일
0

그리디

목록 보기
4/6
post-thumbnail
post-custom-banner

캠핑

풀이

  • 캠핑장은 연속하는 P일 중 L일 동안만 사용할 수 있고, 강산이가 V일짜리 휴가를 시작했을 때 강산이가 캠핑장을 최대 며칠동안 사용할 수 있는가?

  • 어쨌든 사용할 수 있는 일수만큼 연속해서 사용하는 경우가 최대 사용할 수 있다.

  • V를 P로 나누고, 그 값에 L을 곱한다. 이게 일단 나머지 없이 최대로 캠핑할 수 있는 날짜수.
    - 예를 들어, L=5, P=8, V=20 이면 OOOOOXXXOOOOOXXX 까지 나타낸 경우.

  • 그 뒤에도 V를 P로 나눈 나머지를 구하고, 이게 위에서 구하고 남은 날짜 보다 크면 L을 더해주고, 그게 아니면 나머지를 더해준다.

  • 위에서 V/P*L = 10 이고, 나머지 휴가가 20-16=4 남은 상황. 이것이 V%P=4 와 같고, 이 값이 L보다 작으므로 답은 (V/P*L) +(V%P)

🙆‍♀️ 정답 코드
import java.util.*;
import java.io.*;
public class Main {
    public static void main(String[] args)throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input;
        int cnt = 0;
        while(true){
            cnt++;
            input = br.readLine();
            if(input.equals("0 0 0")) break;
            else{
                StringTokenizer st = new StringTokenizer(input);
                int L = Integer.parseInt(st.nextToken());
                int P = Integer.parseInt(st.nextToken());
                int V = Integer.parseInt(st.nextToken());
                int div = V/P;
                int nam = V%P;
                //2 4 6
                //OOXXOO
                if(nam>L) nam = L;
                int ans = div*L+nam;
                System.out.println("Case "+cnt+": "+ans);
            }
        }
    }
}
post-custom-banner

0개의 댓글