문제
월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다.
예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다.
노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다.
A, B, C가 주어졌을 때, 손익분기점을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 21억 이하의 자연수이다.
출력
첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다. 손익분기점이 존재하지 않으면 -1을 출력한다.
예제입력 |
예제출력 |
1000 70 170 | 11 |
3 2 1 | -1 |
2100000000 9 10 | 2100000001 |
문제풀이
우선, 문제를 풀기 위해서는 어떻게 계산해야 하는지를 알아야 했다.
손익분기점을 구하려면 다음과 같은 공식이 있다.
손익분기점이 되는 개수 = 고정비용 x ( 판매가격 - 판매당 유동비 )
여기에서 유의할 것은 이 문제에서는 "손익분기점"을 초과하는 개수를 원하는 것이다
공식을 사용하면 다음과 같다.
ex) 1000[고정비용] x ( 170[판매가격] - 70[유동비용] ) = 10 + 1 -> 11
추가적으로 유의해야 할 것은 판매가격이 유동비용보다 [같거나, 작을경우] 절대 손익분기점이 나올 수 없다는 것이다.
& 설마 ..... 반복문으로 1 ~ 21억까지 계산하도록 하는 사람은 없지? 않을까 싶다.
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(" ");
int result = -1;
int x = Integer.parseInt(str[0]);
int y = Integer.parseInt(str[1]);
int z = Integer.parseInt(str[2]);
if(y >= z) {
System.out.println(result);
} else {
System.out.println((x / (z - y))+1);
}
}
}
'Etc > problem solving' 카테고리의 다른 글
백준 1193, 분수찾기 (0) | 2021.11.23 |
---|---|
백준 2292, 벌집 (0) | 2021.11.12 |
백준 1316, 그룹 단어 체커 (0) | 2021.11.06 |
백준 2750, 수 정렬하기 (0) | 2021.11.04 |
백준 2941, 크로아티아 알파벳 (0) | 2021.11.03 |