반응형
문제
이 문제의 핵심은 '수학' 문제라는 것이다.
처음에 while (반복문) 을 사용하였는데, 시간 초과가 발생했다. 시간 제한을 확인하면 0.25초이다.
즉, 수학 공식을 작성하여 풀어야 한다는 의미이다.
힌트
1. 달팽이는 정상에 오르면 미끄러지지 않는다. > 마지막 날에 올라갈 수 있는 만큼을 제외한 최소 높이를 구한다.
2. 최소 높이까지 도달하기 위한 값을 계산한다.
코드
위 두가지 사항을 고려하면 아래와 같이 코드를 작성할 수 있다.
package AlgorithmStudy.src.bronze;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class B2869 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String a = br.readLine();
StringTokenizer st;
st = new StringTokenizer(a);
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int V = Integer.parseInt(st.nextToken());
double loc = 0;
int day = 0;
if (1 > B || B >= A || A > V || V > 1000000000) return;
loc = V - A; // 정상까지의 최소 높이
day = (int) (Math.ceil (loc / (A - B)) + 1); // 정상 직전에 도달하기 위해 필요한 날짜 + 1 (마지막 날)
// while (loc < V){
// day ++;
// loc += A;
// if (loc >= V) break;
// loc -= B;
// }
System.out.println(day);
}
}
반응형