문제 정보
핵심
수학적으로 접근하는 문제!
난 그래도 이런 문제가 재밌는것 같다
어렵진 않고, 생각만 잘 하면 풀 수 있다
나는 C라는 새로운 변수를 생각해 냈는데,
결국 낮에 A를 이동하지만 밤에는 B만큼 내려오므로 하루가 지나게 되면 결국 C(A-B) 만큼 이동한 것이 된다
정리해 보았을 때, 각 n일 차에 갈수 있는 최대 거리는 다음과 같다
우리는 이제 여기서 도출된 n을 가진 식을 이용해서 다음을 유도해 내면 된다
우리가 구하고자 하는 n에 대한 식은 다음과 같이 나타낼 수 있다는 것을 알 수 있다
n >= (V+C-A) / C
이를 사용하여, 우리는 오른쪽 항에 모든 변수를 알고 있으므로
위 식에 대입하여 해당하는 n의 값을 구할 수 있다
n은 오른쪽의 식보다 크거나 같으므로,
딱 나누어 떨어지는 경우에는 해당 숫자가 n이 될 것이며
딱 나누어 떨어지지 않는 경우에는 1을 더해 준 값이 최소 n(걸린 일 수) 이 될 것이다
풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int A = input[0];
int B = input[1];
int V = input[2];
int C = A - B;
int answer = ((V + C - A) / C) + (((V + C - A) % C != 0) ? 1 : 0);
System.out.println(answer);
}
}
Source Code on GitHub
댓글