본문 바로가기
Algorithm & SQL/BAEKJOON

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

by YoonJong 2022. 7. 11.
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

'Algorithm & SQL > BAEKJOON' 카테고리의 다른 글

백준 JAVA 1712 손익분기점  (0) 2022.07.12
백준 JAVA 1789 수들의 합  (0) 2022.07.11
백준 JAVA 1037 약수  (0) 2022.07.10
백준 JAVA 1978 소수 찾기  (0) 2022.07.09
백준 JAVA 11050 이항 계수 1  (0) 2022.07.08

댓글