낮에는 A만큼 올라가고, 밤에는 B만큼 내려가진다.
그리고 마지막날에는 정상에 도달하게 되니
A만큼 추가로 올라가고, 정상에 도달하게된다.
공식을 한번 직접 도출해보았다.
up은 올라가는 높이, down은 내려가는 높이, totalHeight는 총 높이 이다.
n은 정상에 도달하고자 하는 필요한 일 수 이다.
up + (up - down)n > totalHeight -> 마지막날 올라가는 높이 + 하루에 올라가는 높이 x 일수(n) > 총 높이
(up - down)n > totalHeight - up
(up - down)n > totalHeight - up
n > (totalHeight - up) / (up - down)
up : 3, down : 1, height : 7 로 예를 들면
3 + (3-1)n > 7
(3-1)n > 7 - 3
2n > 4
n > 2
즉 올라가야 하는 일수는 2일 보다 무조건 커야되니,
그 다음날 올라가는일 수 + 1 해주면 된다.
그리고, 문제 선행 조건에 up은 down 보다 작거나 같을 수 없다라는 조건이 있기에,
(totalHeight - up)/(up - down) 나눗셈에서 소숫 자리는 어차피 이동한 날을 의미하게 되서
올림처리하면 된다.
public class BJ_2869 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " "); //속도 이슈로 BufferedReader 사용
int up = Integer.parseInt(st.nextToken());
int down = Integer.parseInt(st.nextToken());
int totalHeight = Integer.parseInt(st.nextToken());
if (0 > down) return;
if (down >= up) return;
if (up > totalHeight) return;
double denominator = totalHeight - up;
double numerator = up - down;
double finalMovingDay = Math.ceil(denominator / numerator) + 1;
System.out.println((int) finalMovingDay);
}
}