728x90

https://www.acmicpc.net/problem/2869

2869번: 달팽이는 올라가고 싶다

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net



풀이)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws Exception{
        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);
    }
}

이 문제는 수학적으로 생각해야했다.

일단,,, 절대로 v / (a-b)를 하면 안 된다!
목표지점에 도착한 후에는 미끄러지지 않기 때문!!

일단, 나무 길이에서 미끄러지는 길이만큼 뺐을 때(v-b)를 최종적으로 올라가는 길이(a-b)로 나눈 몫은 기본적으로 날짜에 포함된다.
이후 두 가지 경우로 나눌 수 있다.
1. 나무 길이에서 미끄러지는 길이만큼 뺐을 때, 나머지가 0
2. 나머지가 0이 아닐 때

1의 경우, 하루를 더할 필요가 없고, 2의 경우 하루를 더 더해줘야 한다!

728x90

'코테 > 백준' 카테고리의 다른 글

백준 1874 스택 수열(JAVA)  (0) 2023.01.13
백준 1920 수 찾기(JAVA)  (0) 2023.01.12
백준 5430 AC(JAVA)  (0) 2023.01.12
백준 11047 동전0 (JAVA)  (0) 2023.01.11
백준 7569 토마토(JAVA)  (0) 2023.01.10

+ Recent posts