import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String[] arr = str.split(" ");
int day =0;
int top =0;
int a = Integer.parseInt(arr[0]);
int b = Integer.parseInt(arr[1]);
int v = Integer.parseInt(arr[2]);
while(top < v){
top += a;
if(top<v){
top -= b;
}
day++;
}
System.out.println(day);
}
}
테스트 코드는 모두 맞았지만.. 시간 초과가 나왔다.
시간 제한이 0.25로 짧았기에 while문을 지워야한다는 얘기다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String[] arr = str.split(" ");
int a = Integer.parseInt(arr[0]);
int b = Integer.parseInt(arr[1]);
int v = Integer.parseInt(arr[2]);
int day = (v-b) / (a-b) ;
if ((v-b) % (a-b) != 0) {
System.out.println(day+1);
} else{
System.out.println(day);
}
}
}
- n일차에 올라가는 높이는 A-B + A-B + ... + A
=> An - B(n-1)- An - B(n-1)의 값이 V와 비교 했을 때 같다면 정답이다.
- 하지만 int 로 값을 받았기 떄문에 나머지가 존재하는 경우가 생긴다.
이 경우는 하루를 더 올라가야 하는 경우이기에 1을 더해 출력한다.