The Kkang's man

[ 자바 /Java ] 백준 4796 : 캠핑 본문

알고리즘/그리디

[ 자바 /Java ] 백준 4796 : 캠핑

정낑깡 2021. 7. 4. 20:30

문제


 

 


 

풀이


1. Case 번호에 쓸 cnt, 결과값을 저장할 result를 선언한다.

2. 한 줄에 사용 가능한 기간 L, 연속하는 날짜 P, 총 휴가기간 V를 입력받는다.

3. 이용 가능한 기간 L0일 경우 while문 중지

4. 아니라면 Case1 추가하고 result0으로 초기화한다.

5. V일동안 반복되는 P일 이내에 L일모두 사용

6. L남은 날을 비교하여 L 또는 남은 날을 result에 더해준다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Camping_4796 {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		StringBuffer sb;

		int cnt = 0;
		int result;

		while(true) {
			st = new StringTokenizer(br.readLine(), " ");
			
			int L = Integer.parseInt(st.nextToken());	// 사용 가능 기간
			int P = Integer.parseInt(st.nextToken());	// 연속하는 날짜
			int V = Integer.parseInt(st.nextToken());	// 총 휴가 기간
			
			if(L==0) break;
			
			cnt++;										// Case +1
			result = 0;									// result 초기화

			result += L * (V / P);						// V일 동안 반복되는 P일 이내에 L일 모두 사용
			
			if( L <= V % P ) {							// L이 남은 날보다 적거나 같은 경우
				result += L;							// result에 L 추가
			} else if( L > V % P) {						// L보다 남은 날이 적은 경우
				result += V % P;						// result에 남은 날 추가
			} 
			
			sb = new StringBuffer();

			sb.append("Case " + cnt + ": " + result).append('\n');
			System.out.print(sb);
		}
	}
}

 

Comments