본문 바로가기

CS ﹒ Algorithm/Baekjoon

JAVA백준 문제풀이 (4) 2869:달팽이는 올라가고 싶다

 

 

문제 제목이 너무 귀엽다.

귀여운 달팽이를 한마리 그리고 싶었지만 나의 그림 실력으로는 소금물에 절여진 달팽이 밖에 그릴 수 없어서 포기했다.

 

이번 문제는 그다지 길게 풀이할 것이 없다.

 

 

 

 

 

 

위에는 a,b,c로 작성해놨지만 조금 더 읽기 쉽게 tree, up, down, day라고 하자.

day를 구하는 공식은 day = tree / up-down이다.

그런데 중요한 것은 마지막 날은 올라가기만 하고 떨어지지는 않는다.

그러면 올라가는 총 높이는 tree가 아니라 tree-down이 될 것이다.

항상 하는 말이지만 (나처럼) 머리가 나쁘면 몸이 고생하면 된다. 이해가 잘 안되면 그림을 그려보자.

 

마지막 날에는 올라가기만 하고 떨어지지 않으니 총 높이에서 -b를 해줘야 한다는 것을 확인할 수 있다.

 

따라서 달팽이가 올라가는데 걸린 날짜를 구하는 공식은 day = (tree-down) / (up-down)이 되어야 한다.

그리고 하루에서 0.1이 지났든 0.0001이 지났든 하루를 지나면 모두 이틀로 쳐야한다.

double로 연산하고 Math.ceil로 올림 처리를 해주던가, 혹은 조건문을 이용하여 나머지가 0이 아니면 +1을 해주는 것도 방법이다.

 

나는 조건문으로 처리했다.

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long up = scanner.nextInt();
        long down = scanner.nextInt();
        long tree = scanner.nextInt();
        long day = 0;

        if ( (tree-down) % (up-down) == 0 ) {
            day = (tree - down) / (up - down);
        } else { day = (tree - down) / (up - down) + 1 ; }
        System.out.println(day);
    }
}