

A, B, V가 각각 2, 1, 5일때를 생각해보았다.| day | A | B | 결과 |
|---|---|---|---|
| 1 | +2 | -1 | 1 |
| 2 | +2 | -1 | 2 |
| 3 | +2 | -1 | 3 |
| 4 | +2 | - | 5 |
4일째 되는 낮에 5미터에 도달하기 때문에 4일째에는 내려가지 않는다.
(A - B) * (day - 1) + A = V가 된다. 즉, day = (V - A) / (A - B) + 1이 되는 것이다. 이때, (V - A) / (A - B)가 나누어 떨어지지 않을땐 (ex. 5, 1, 6) 1을 더해준다.import java.io.*;
import java.util.StringTokenizer;
public class Main3 {
public static void main(String[] args) throws IOException {
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = bfr.readLine();
StringTokenizer st = new StringTokenizer(str, " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int V = Integer.parseInt(st.nextToken());
int dDay = (V - A) / (A - B) + 1;
if((V - A) % (A - B) != 0) {
dDay++;
}
bfw.write(String.valueOf(dDay));
bfr.close();
bfw.flush();
bfw.close();
}
}
for문으로 접근했는데 이 문제의 시간 제한은 0.25초다. 즉, 반복문을 이용하지 말라는 말이다^ㅁ^Math.celi 함수를 이용해서 올림하는 방식으로 접근했었지만 마지막 예제에서 자꾸 아예 다른 값이 나와 int형으로 바꿨다. double로 해결하는 법은 없는지😅