알고리즘/일반(단순구현)

[백준] 2869번 달팽이는 올라가고 싶다 #Java

VIPeveloper 2022. 5. 7. 19:08
728x90
반응형
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 cnt = 1;
        int tmp = 0;

        // 매일 매일 올라갔다 내려갔다 시뮬레이션 하기
//        while (tmp < v){
//            tmp+=a;
//            if(tmp >= v) break;
//            else tmp -= b;
//            cnt++;
//        }
//        System.out.println(cnt);

        // 하루(올라가기 + 내려가기) 가 보장된 날들을 나눠주기
        int move = a - b;   // 별 일 없이 흘러간 하루 ~
        int safe_move = v - a;  // 내려감 없이 끝나는 특별한 하루.
        if(safe_move <= 0){     // 한방에 끝날 수도 있는 예외처리.
            System.out.println(1);
            return;
        }
        // 무조건 보장되어있음.
        int day = safe_move / move;
        
        // 목적지에 도착하면 절때 떨어지지 않음으로 1만 더함
        if(day * move + a >= v){
            day++;
        }else{
        // 하루를 더 써야 목적지에 도달할 수 있음.
            day+=2;
        }
        System.out.println(day);
    }
}
728x90
반응형