[백준, BOJ 2869] 달팽이는 올라가고 싶다 (java)
Problem Solving/BOJ

[백준, BOJ 2869] 달팽이는 올라가고 싶다 (java)

728x90

출처-https://www.acmicpc.net/problem/2869

 

2869번: 달팽이는 올라가고 싶다

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net


728x90

 

내 생각

처음에 반복문으로 day를 구했다.
하지만 이 방법을 사용하면 시간 초과가 나온다.
따라서 반복문 말고 식을 이용해 day를 한 번에 구해야 한다.

day를 n이라고 할 때, n의 최솟값을 구하는 식은 다음과 같다.
$an-b(n-1) >= v$ 
$an-bn+b >= v$ 
$(a-b)n >= v-b$ 
$n >= (v-b)/(a-b)$

 

import java.util.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		int a = scan.nextInt();
		int b = scan.nextInt();
		int v = scan.nextInt();
		int day = 0;
		
		if ((v-b)%(a-b) == 0)
			day = (v-b)/(a-b);
		else
			day = (v-b)/(a-b)+1;
		
		System.out.println(day);
	}

}
728x90