본문 바로가기
알고리즘/백준

백준 2869번 달팽이는 올라가고 싶다 자바 java

by 클로드 2021. 4. 13.
반응형

문제

 

풀이

 

정상에 올라가면 미끄러지지 않는다는 조건 때문에 높이에서 B만큼을 빼고 계산을 한다

(V - B) / (A - B)

소수점이 있다면 올림 처리를 하여 해결하였다

처음에는 V / (A - B) - 1로 풀면 해결될라나 하고 생각했으나

다른 테스트 케이스에서 틀린다

4 1 10 → 3

4 1 11 → 4

100 99 1000000000 → 999999901

마지막 날짜에서 정상에 도달하는 조건 때문에 while로 처리해야 하나?라는 생각도 했었다 (시간제한이 0.15 초라 while문으로는 통과하기 힘들 것이다)

검색을 해보니 마지막 정상 도달하면 미끄러지는 값을 계산할 필요가 없어지므로 V - B를 하여 계산을 하면 된다는 것을 찾아서 해결하였다

 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double A = sc.nextDouble();
        double B = sc.nextDouble();
        double V = sc.nextDouble();

        double days = (V - B) / (A - B);
        System.out.println((int)Math.ceil(days));
    }
}

 

출처

www.acmicpc.net/problem/2869

반응형

댓글