[백준] 2869. 달팽이는 올라가고 싶다

rlovz·2024년 7월 25일
0

백준

목록 보기
2/3

❕ 문제

백준 2869. 달팽이는 올라가고 싶다

❕ 코드 리뷰

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String args[]) throws Exception {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str = br.readLine();

        String[] arr = str.split(" ");
        int day =0;
        int top =0;
        
        int a = Integer.parseInt(arr[0]);
        int b = Integer.parseInt(arr[1]);
        int v = Integer.parseInt(arr[2]);

        while(top < v){
            top += a;
            if(top<v){
                top -= b;
            }
            day++;
        }
        System.out.println(day);
    }
}

❗결과는 시간 초과,,

테스트 코드는 모두 맞았지만.. 시간 초과가 나왔다.
시간 제한이 0.25로 짧았기에 while문을 지워야한다는 얘기다.

❕ 새로운 코드 리뷰

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String args[]) throws Exception {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str = br.readLine();

        String[] arr = str.split(" ");

        int a = Integer.parseInt(arr[0]);
        int b = Integer.parseInt(arr[1]);
        int v = Integer.parseInt(arr[2]);

        int day = (v-b) / (a-b) ;
        if ((v-b) % (a-b) != 0) {
            System.out.println(day+1);
        } else{
            System.out.println(day);
        }

    }
}

‼️ 새롭게 생각한 방법은

  1. n일차에 올라가는 높이는 A-B + A-B + ... + A
    => An - B(n-1)
  2. An - B(n-1)의 값이 V와 비교 했을 때 같다면 정답이다.
  3. 하지만 int 로 값을 받았기 떄문에 나머지가 존재하는 경우가 생긴다.
    이 경우는 하루를 더 올라가야 하는 경우이기에 1을 더해 출력한다.
profile
안녕하세요

0개의 댓글