문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 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 |
⭕ 풀이
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 = (int)(Math.ceil((double)(V-A)/(A-B)));
System.out.print(day+1);
}
}
✅ 생각의흐름
1. 100까지가야하는데 도착하면 더이상 미끄러지지않고 하루에 5만큼 간다면 95~99의 범위까지만 간뒤 +1을 해야겠다라고 생각
즉 V - A 까지만 가면 되겠다고 생각
2. 하루에 올라갔다 미끄러지는높이는 A - B = x
V - A 를 x로 나눈뒤 + 1 을 하면 되겠다.
3. 하지만 예제 2번처럼 A=5 B=1 C=6 인상황에서는
V-A (6-5) 를 A-B (5-1) 로 나눈다면 즉 1 / 4 는 0.25 정수형이라 소수점날리면 0이된다.
4. 소수점이 0.001 이라도 있다면 하루로 카운트 해야하므로
Math.ceil 올림 메서드를 사용해 올린 뒤 +1 을 계산해 출력한다.
'Algorithm > Baekjoon(Java)' 카테고리의 다른 글
[백준/JAVA] 2775 : 부녀회장이 될테야 ( 기본 수학 1 ) (0) | 2022.08.04 |
---|---|
[백준/JAVA] 10250 : ACM호텔 ( 기본 수학 1 ) (0) | 2022.08.03 |
[백준/JAVA] 1193 : 분수찾기 ( 기본 수학 1 ) (0) | 2022.08.01 |
[백준/JAVA] 2292 : 벌집 ( 기본 수학 1 ) (0) | 2022.07.31 |
[백준/JAVA] 1712 : 손익분기점 ( 기본 수학 1 ) (0) | 2022.07.30 |