
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
해당 문제의 시간제한이 있기 때문에 BufferedReader를 사용하는 것을 추천한다.
먼저 문제를 보고 V(정상) / (A(올라감) - B(미끄러짐)) 으로 날짜를 구할 수 있다고 생각할 것이다. 하지만 정상에 올라간 후에는 미끄러지지 않는다 라는 조건이 있기 때문에 틀릴수 밖에 없다. 왜냐하면 정상에 올라간 순간 미끄러짐 부분은 생각하지 않기 때문이다.
따라서 (V - B) / (A - B) 라는 공식이 나오게 되고 이때 (V - B) % (A - B) == 0이면 그대로 출력해도 되지만 나머지가 존재하는 경우 즉, 더 올라가야하는 높이가 있는경우 구해진 날짜(day) + 1를 해주어야 한다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
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 = (v - b) / (a - b);
if ((v - b) % (a - b) != 0) {
day += 1;
}
System.out.println(day);
}
}