✏️ 문제풀이/백준
[백준/Java] 2869번 :: 달팽이는 올라가고 싶다
bono-hye
2024. 6. 9. 18:57
| 문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
| 입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
| 출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
| 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int V = Integer.parseInt(st.nextToken());
int day = (V-B) / (A-B);
if ((V-B)%(A-B) != 0)
day++;
System.out.println(day);
}
}
| 정리
달팽이가 정상에 도착하면 미끄러지지 않는 다는 조건에 신경 써서 풀어줘야 한다!
사실 신경 안쓰고 그냥 간단한 계산식으로 풀었다가 예시와 다른 값이 나오길래 알았던 사실이다.
전체 길이에서 미끄러지는 만큼을 빼준 값에 올라가는 거리 - 미끄러지는 거리로 나눠줘야 한다.
단, / 연산은 몫만 계산되므로 % 나머지를 구하는 연산자로 +1을 해줘야 하는지 한번 더 확인을 해줘야 한다.