달팽이는 올라가고 싶다.
문제 설명
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
제한사항
- 없음
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
입출력 예
answers | return |
2 1 5 | 4 |
5 1 6 | 2 |
100 99 1000000000 | 999999901 |
나의 문제풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int answer = 0;
String array[] = br.readLine().split(" ");
int a = Integer.parseInt(array[0]);
int b = Integer.parseInt(array[1]);
int v = Integer.parseInt(array[2]);
if (a == v) {
answer = 1;
} else {
answer = (int) Math.ceil((double)(v - a) / (double)(a - b)) + 1;
}
System.out.println(answer);
}
}
- 공백으로 구분된 입력값을 버퍼리더를 이용하여 받아 split함수를 이용해 배열에 넣어준다.
- 올라가는 길이와 막대 길이가 같으면 하루에 다 올라가기 때문에 조건을 주어 시간을 단축시켜준다.
- 마지막날 올라가는 길이를 제외한 올라가야 하는 길이 (v - a)
- 하루에 올라가는 길이 (a - b)
- 올라가야 하는 길이 / 하루에 올라가는 길이 = 올라가는데 걸리는 일 수 (정수형일 경우 자동으로 내림으로 정수가 되어 실수형으로 계산한 뒤 올림을 해주어야 한다. 또한 float형일 경우 길이에 문제가 생겨 double형으로 해주어야 한다.)
느낀 점
앞선 문제에서 필요해서 찾아본 버퍼리더의 활용 덕분에 쉽게 풀 수 있었다. 다른 문제들과 달리 수식으로만 풀 수 있어서 의외로 편한 부분이 있었다.
'생각정리 > 코딩테스트' 카테고리의 다른 글
[JAVA 알고리즘]BAEKJOON 1929번 소수 구하기 (0) | 2023.07.27 |
---|---|
[JAVA 알고리즘]BAEKJOON 10250번 ACM 호텔 (0) | 2023.07.27 |
[JAVA 알고리즘]BAEKJOON 4948번 베르트랑 공준 (0) | 2023.07.26 |
[JAVA 알고리즘]BAEKJOON 2939번 설탕 배달 (0) | 2023.07.25 |
[JAVA][Level1]PROGRAMMERS 모의고사 (0) | 2022.02.08 |