문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
*오답률이 높은 이유는 시간제한때문이다. 앞서 풀었던 손익분기점 문제와 비슷한 문제이다.
1. V(목표)는 고정된 값이고, 결국 달팽이는 하루에 A(UP)-B(DOWN)만큼 올라간다.
2. 달팽이는 목표위치에 도착한 날에는 B만큼 떨어지지 않는다.
3. 목표지점인 V에서 마지막날(도착해서 B만큼 떨어지지 않는 날)을 빼주면 V-A 가 된다.
4. 달팽이가 오르는데 걸리는 날을 구하는 식 ((V-A)/(A-B)) 에서 만약 딱 나누어 떨어진다면 달팽이는 올라갔다가 내려와야 목표지점에 도달하기 때문에 +1을, 나누어 떨어지지 않는다면 마지막날 올라가는 작업까지 해줘야 목표지점에 도달하기 때문에 +2를 해준다.
import java.util.Scanner;
public class Exam2869 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long A = sc.nextInt();
long B = sc.nextInt();
long V = sc.nextInt();
long result = (V - A) / (A - B);
if ((V - A) % (A - B) == 0) {
System.out.println(result + 1);
} else {
System.out.println(result + 2);
}
}
}
'Algorithm by java' 카테고리의 다른 글
백준 9093 단어뒤집기 java (0) | 2019.09.04 |
---|---|
백준 1057번 토너먼트 java (0) | 2019.09.02 |
백준 1094번 막대기 java (0) | 2019.09.01 |
백준 1712번 손익분기점 java (0) | 2019.08.29 |
백준 2455번 지능형 기차 java (0) | 2019.08.27 |