[BOJ / java] 2869 : 달팽이는 올라가고 싶다
📚 Table of Contents
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
예제
예제 입력 1
2 1 5
예제 출력 1
4
예제 입력 2
5 1 6
예제 출력 2
2
예제 입력 3
100 99 1000000000
예제 출력 3
999999901
문제 풀이
코드설명
- 코드의 동작 방식:
- 사용자로부터 세 개의 정수 A, B, V를 입력받습니다. 여기서 A는 낮 동안 올라갈 수 있는 높이, B는 밤 동안 미끄러지는 높이, V는 목표 높이입니다.
day
는 달팽이가 정상에 도달하는 데 필요한 일수를 나타냅니다.- 식
(v - b - 1) / (a - b) + 1
는 달팽이가 정상에 도달할 때까지 필요한 총 일수를 계산합니다. 이 식은 달팽이가 마지막 날에는 미끄러지지 않고 정상에 도달할 수 있음을 고려하여 구성되었습니다. - 계산된
day
값을 출력합니다.
- 코드의 핵심 부분:
- 달팽이가 정상에 도달하기 직전의 날까지의 이동 거리를 계산하는 과정입니다. 이는
(v - b - 1) / (a - b)
식으로 표현됩니다. 여기서-1
은 마지막 날에 정상에 도달하기 직전까지의 거리를 고려하기 위한 것입니다. - 최종적으로 1을 더해주는 이유는 마지막 날을 포함하기 위함입니다.
- 달팽이가 정상에 도달하기 직전의 날까지의 이동 거리를 계산하는 과정입니다. 이는
- 코드의 흐름:
- 사용자 입력 → 입력값 파싱 → 필요 일수 계산 → 결과 출력
풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class _07_달팽이는올라가고싶다 {
public static void main(String[] args) throws IOException {
// 사용자로부터의 입력을 받기 위한 객체 생성
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 입력값을 공백으로 구분하여 배열에 저장
String[] arr = br.readLine().split(" ");
// 낮에 올라갈 수 있는 높이
int a = Integer.parseInt(arr[0]);
// 밤에 미끄러지는 높이
int b = Integer.parseInt(arr[1]);
// 목표 높이
int v = Integer.parseInt(arr[2]);
// 달팽이가 정상에 도달하는 데 필요한 일수 계산
int day = (v - b - 1) / (a - b) + 1;
// 결과 출력
System.out.println(day);
}
}
'Coding > Backjoon' 카테고리의 다른 글
[BOJ / java] 2501 : 약수 구하기 (0) | 2024.03.21 |
---|---|
[BOJ / java] 5086 : 배수와 약수 (0) | 2024.03.21 |
[BOJ / java] 1193 : 분수 찾기 (0) | 2024.03.11 |
[BOJ / java] 2292 : 벌집 (0) | 2024.03.09 |
[BOJ / java] 2903 : 중앙 이동 알고리즘 (0) | 2024.03.09 |