반응형
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int up = in.nextInt();
int down = in.nextInt();
int height = in.nextInt();
int totalDay = (height - up) / (up - down);
if((height - up) % (up - down) == 0) {
System.out.print(totalDay + 1);
} else {
System.out.print(totalDay + 2);
}
}
}
달팽이는 낮에 up만큼 올라가고 밤에 down만큼 내려간다
즉 하루 동안에 올라간 높이는 up - down이 될 것이다. 그리고 달팽이는 정상에 닿으면 더이상 미끄러지지 않는다..!
먼저는 달팽이가 나무 정상에 오르기 하루 전날까지 몇일이 걸리는지 구한다
int totalDay = (height - up) / (up - down);
그 다음은 달팽이녀석이 마지막날 전날까지 올라갈 높이에서 하루 오르는 높이를 나눈 나머지 값을 구한다
(height - up) % (up - down) == 0
만약 0으로 나눠떨어지면 이녀석은 하루만 더 오른다면 정상을 정복하게 될 것이다..!! 그러므로 +1일을 더해주면 달팽이녀석은 정상 정복에 totalDay +1 일이 걸리게 된다
만약 그렇지 않다면..? 남은 높이를 올라가고..! 떨어지고~ + 마지막날 올라가는 작업까지 한번 더 해줘야 목표지점에 도달하기 때문에 +2를 해준다..!
(달팽이 뇨속아 다음부턴 미끄러지지 말거라...)
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2812 크게만들기 (자바풀이) (0) | 2024.07.25 |
---|---|
[백준] 1987알파벳 (0) | 2024.07.24 |
백준 [1193 분수찾기] (0) | 2023.02.18 |
백준 [3052] 나머지 (0) | 2023.02.10 |
백준 [5597] 과제 안내신 분..? (0) | 2023.02.10 |