https://www.acmicpc.net/problem/2869
[ 문제 ]
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
[ 입력 ]
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
[ 출력 ]
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
[ 입출력 예시 ]
예제 입력 | 예제 출력 |
---|---|
2 1 5 | 4 |
5 1 6 | 2 |
100 99 1000000000 | 999999901 |
- 아침에 올라가는 높이(A), 밤에 미끄러지는 높이(B), 목표 높이(V)를 입력 받을 변수를 선언하여 값을 입력받는다.
- 날 수는
[ 목표 높이 - 미끄러지는 높이 ]를 [아침에 올라가는 높이 - 밤에 미끄러지는 높이 == 하루에 올라가는 높이 ] 로 나누어 준다.
이렇게 되면, 마지막 날 미끄러지는 조건은 아침에 목표층까지 도달하지 못 했을 때의 상황이다. 그 만큼이 며칠인지 구해준 것이다.
- 만약 그 양이 0에 딱 맞아 떨어지지 않는다면, 그 다음 날 올라갈 1일을 더 추가해주고 날 수를 출력해준다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
int V = sc.nextInt();
int day = (V-B) / (A-B);
if((V-B) % (A-B) != 0) {
day++;
}
System.out.println(day);
}
}