문제
달팽이가 낮에 A미터 올라가고 밤에 B미터 미끄러진다. 높이 V인 나무를 며칠 만에 올라가는지 구하라.
입력
A, B, V가 주어진다.
출력
나무를 올라가는 데 걸리는 날 수를 출력한다.
예제
| 입력 | 출력 |
|---|---|
2 1 5 | 4 |
풀이
마지막 날에는 미끄러지지 않으므로, (V-B)/(A-B)를 올림하여 날 수를 구한다.
- V-B를 A-B로 나눈다 (마지막 날은 올라가기만 하므로 V-B까지만 도달하면 됨)
- 나머지가 있으면 올림한다
핵심 아이디어: 마지막 날에는 미끄러지지 않으므로 ceil((V-B)/(A-B))가 답이다.
코드
package day549;
import java.io.*;
import java.util.*;
public class Day547BOJ2869달팽이올 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int up = Integer.parseInt(st.nextToken());
int down = Integer.parseInt(st.nextToken());
int length = Integer.parseInt(st.nextToken());
int day = (length - down) / (up - down);
if ((length - down) % (up - down) != 0)
day++;
System.out.println(day);
}
}복잡도
- 시간: O(1)
- 공간: O(1)