Notice
Recent Posts
문제 풀이 및 개발 공간
[백준] 4796번 캠핑 문제! (silver 5 본문
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
int num=1;
while(true) {
StringTokenizer st=new StringTokenizer(br.readLine());
int posDay=Integer.parseInt(st.nextToken());//사용가능 l날
int conDay=Integer.parseInt(st.nextToken());//연속하는 p날
int vacaDay=Integer.parseInt(st.nextToken());//연속하는 휴가v날
if(posDay + conDay + vacaDay==0 ) {
break; //이중 반복문이 아니므로 break;로 탈출
}
if(vacaDay%conDay > posDay) {
int result=vacaDay/conDay*posDay+ posDay;
bw.write("Case "+num+": "+result+"\n");
bw.flush();
num++;
}
else{
int result=vacaDay/conDay*posDay+ vacaDay%conDay;
bw.write("Case "+num+": "+result+"\n");
bw.flush();
num++;
}
}
}
}
//오류가 났었던 이유, 휴가날에서 p날을 나누면 p가 몇번 반복되는지 나오고
//p의 반복횟수는 결구 사용가능한 날이 몇번 반복되는지이다. 따라서 그렇게 나눈뒤, posDay를 곱해
//이용가능날이 몇번 돌아오는지 구하고, 나머지 값은 다 더했다. 예제에서는 문제가 없었지만,
//5 40 60과 같이 40일에 5일만 쓸 수있는 경우에는 오류가 발생한다. 왜냐하면,
// 60/40을 하면, 몫이 1이므로 일단 5일이 사용가능하고, 나머지 20일에 대해서 다 이용가능 한것으로
//더해지기 때문이다. 실제로는 20일중에서도 5일만 사용이 가능한 것인데 말이다.,
//따라서 그러한 경우를 분리해서 계산해야 한다.
'백준공부 > java' 카테고리의 다른 글
[백준] 1110번 더하기 사이클 문제! (bronze1 (0) | 2022.07.21 |
---|---|
[백준] 1475번 방 번호 문제!(silver 5 (0) | 2022.07.21 |
[백준] 10250번 ACM호텔 문제! (bronze 3 (0) | 2022.07.17 |
[백준] 1292번 쉽게 푸는 문제! (bronze 1 (0) | 2022.07.17 |
[백준] 1330번 두 수 비교하기 문제! (bronze 5 (0) | 2022.07.17 |