int 타입 나눗셈
int 타입 나눗셈 시, 소수점은 무조건 버림 됨.
무조건 올림을 하고 싶다면
A/B인 상황에서
(A+(B-1)) / B를 하면 int 계산시에는 무조건 올림이 된다.
=> 나머지가 없으면 0.n이 돼서 원래 몫으로 잘 나오고
=> 나머지가 있으면 B-1 값이 더해저 올림이 된다.
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int V = Integer.parseInt(st.nextToken());
int len = A-B; // 하루 이동 거리
int day; // 최종 걸린 날
// 마지막 날에는 자지 않더라도 A 만큼 이동할 수 있음
V-=A;
// 즉 V에서 A를 뺀 값에서 하루 이동거리에 대한 몫을 구하면 됨 (나머지가 없고 몫이 0인 경우 제외)
day = (V+len-1)/len + 1; // 나머지가 0인 경우는 버림이 되기 때문에 괜찮, 나머지가 있을 경우만 무조건 올림처리 된다.
bw.write(day+"");
bw.flush();
bw.close();
br.close();
}
}
반복문 대신, 하루 최종 이동 거리에 대한 몫과 나눗셈으로 계산하고
마지막 날에만 확인해서 처리하는 것이 좋을듯.
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int V = Integer.parseInt(st.nextToken());
int day = 1; // 1일차 부터 시작임
while(V > 0) { // 남은 거리가 0이하이면 탈출
// 낮에 이동
V -= A;
if(V <= 0) break; // 이동한 뒤 남은 거리 없으면 빠져나가기
// 잠자기
V+=B;
day++;
}
bw.write(day+"");
bw.flush();
bw.close();
br.close();
}
}