🔑알고리즘/baekjoon

백준 1712 : 손익분기점 - 자바 문제 풀이

pkyung 2021. 8. 4. 14:19
반응형

백준 1712번 문제입니다.

A는 매년 무조건 드는 비용

B는 물건을 만드는데 드는 비용

C는 물건의 개수

n은 손익분기점

손익분기점을 구하기 위해서는 B가 C보다 작아야한다. 

그리고 손익분기점은 A+n*B > C*n이다.

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long a = sc.nextInt();
		long b = sc.nextInt();
		long c = sc.nextInt();
		long n = 1;
		while (a + n * b >= c * n && b < c) {
			n++;
		}
		if (b > c)
			n = -1;
		System.out.print(n);

	}

}

그래서 while문을 이용했는데 시간초과라는 결과가 나왔다.

아무래도 B와 C의 차이가 적으면 개수가 많이 커지기 때문에 수학을 이용해야한다.

C에서 B를 뺀 값은 물건 하나를 팔아서 번 수익이다.

A에서 C-B의 값을 나눈 뒤 1을 더하면 손익분기점이 된다.

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long a = sc.nextInt();
		long b = sc.nextInt();
		long c = sc.nextInt();

		System.out.print(b < c ? (a / (c - b)) + 1 : -1);

	}

}

 이렇게 풀면

풀 수 있다.

반응형