문제
고정 비용 A, 가변 비용 B(개당), 판매 가격 C(개당)가 주어질 때, 이익이 발생하기 시작하는 최소 판매 개수를 구하라.
입력
첫째 줄에 A, B, C가 주어진다.
출력
손익분기점(이익이 발생하는 최소 판매 개수)을 출력한다. 이익을 낼 수 없으면 -1을 출력한다.
예제
| 입력 | 출력 |
|---|---|
1000 70 170 | 11 |
풀이
판매 가격이 가변 비용보다 클 때, A/(C-B)+1이 손익분기점이다.
- C가 B 이하이면 이익을 낼 수 없으므로 -1을 출력한다
- 그렇지 않으면
A/(C-B)+1을 출력한다 (정수 나눗셈의 몫에 1을 더함)
핵심 아이디어: 총 이익 = N*C - (A + N*B)이므로 N*(C-B) > A, 즉 N > A/(C-B)일 때 이익이 발생한다.
코드
package day499;
import java.io.*;
import java.util.*;
public class Day482BOJ1712손익분기점 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int C = Integer.parseInt(st.nextToken());
if (C <= B) {
System.out.println("-1");
} else {
System.out.println((A / (C - B)) + 1);
}
}
}복잡도
- 시간: O(1)
- 공간: O(1)