https://www.acmicpc.net/problem/2869
처음엔 올라가기만 하기 때문에 올라가는 거리만큼을 전체 거리해서 뺸 값을 올라가고 미끄러진 값의 차이만큼 나눈다.
만약 나눈 값이 소수가 된다면 올림을 사용한다. 올림을 사용하기 위해 Math.ceil을 사용했다.
직관적으로 올라가고 내려가는 걸 반복문을 이용했고 시간초과가 나왔다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
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());
long a = Long.parseLong(st.nextToken());
long b = Long.parseLong(st.nextToken());
long v = Long.parseLong(st.nextToken());
int day = 1;
long length = a;
while (true){
if(length >= v) break;
else {
length -= b;
day++;
}
length += a;
}
System.out.println(day);
}
}
package com.example.baekjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
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());
long a = Long.parseLong(st.nextToken());
long b = Long.parseLong(st.nextToken());
long v = Long.parseLong(st.nextToken());
double up = a - b;
double distace = v - a;
int day = 1;
day += (int)Math.ceil(distace / up);
System.out.println(day);
}
}