Algorithm & SQL/BAEKJOON

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

YoonJong 2022. 7. 11. 14:38
728x90
반응형

 

실버난이도로 올라오면서 수학에 관련된 문제들이 제법 많아지고 까다로워졌다.

공식을 세워야하며, 이해에 대한 난이도가 브론즈보다 훨씬 많이 올라갔다고 생각한다.

 

먼저, 낮 과 밤 따로 계산을해야한다. 예제 1번으로 예시를 들어 공식을 세워보면,

1일 째 낮 = 2

1일 째 밤 = 2 - 1 = 1

2일 째 낮 = 2 - 1 + 2 = 3

2일 째 밤 = 2 - 1 + 2 - 1 = 2

3일 째 낮 = 2 - 1 + 2 - 1 + 2 = 4

3일 째 밤 = 2 - 1 + 2 - 1 + 2  -1 = 3

4일 째 낮 = 2 - 1 + 2 - 1 + 2  -1 +2 = 5  (도착)

 

공식으로 보면 

1일 째 낮 = A

1일 째 밤 = A - B = 1

2일 째 낮 = A - B + A = 3

2일 째 밤 = A - B + A - B = 2

3일 째 낮 = A - B + A - B + A = 4

3일 째 밤 = A - B + A - B + A  - B = 3

4일 째 낮 = A - B + A - B + A  - B + A = 5  (도착)

 

낮을 기준으로 공식을 보면 , (A-B) * ( N-1 ) + A = V 가 된다. 정리해보면

AN - A - BN + B + A = V

N(A-B) + B = V

N  = (V-B) / (A-B) 이다.

 

해당식을 대입하면 된다.

 

package BAEKJOON;

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

public class NO2869 {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] str = br.readLine().split(" ");
        double a = Double.parseDouble(str[0]);
        double b = Double.parseDouble(str[1]);
        double v = Double.parseDouble(str[2]);

        int n = (int)Math.ceil((v-b)/(a-b)); // 소수가 나오면 올림을 한다.

        System.out.println(n);
    }
}

 

 

728x90
반응형