STUDY/백준알고리즘

[1712:JAVA] 기본 수학 1 > 손익분기점

bameh 2022. 2. 22. 14:26

문제

월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 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을 출력한다.

 

 

 

[풀이방법]

문제를 읽어본 후 한 번에 정리가 되지 않아 수식으로 정리를 해보았다.

 

1. 변수 정리

A >> 고정 비용
B >> 가변 비용
C >> 책정된 가격

C*n > A+(B*n) == true >> 손익분기점(총수입 > 총비용)

 

2. 손익분기점 계산

문제에 따르면 총 수입이 총 비용과 같거나 작을 때 -1을 출력시켜야한다.

아래와 같이 총 수입과 총 비용을 계산하기 용이하도록 위의 수식을 다시 한 번 정리했다.

 C*n = A+(B*n)
 > A = (C*n)-(B*n)
 > A = (C-B)n
 > n = A/(C-B)

위의 수식에서 n이 0 이하일 때 -1을 출력시켜야 한다.

A는 고정 비용이기 때문에 변화하지 않는다. 그렇다면 C-B가 0 혹은 0보다 작아야 n이 0 이하가 될 수 있다.

 

C가 B보다 작거나 같을 때 n은 0일 수 있다는 것을 확인할 수 있다.

이 때 -1을 출력한다.

if (C <= B) {
 System.out.println(-1);
}

 

그리고 n이 0보다 클 때 위의 수식에서 1을 더하여 손익분기점을 계산할 수 있다.

System.out.println((A/(C-B))+1);

 

 

구체적인 풀이 방식 및 BufferedReader를 이용한 방식은 아래의 블로그를 참고하면 좋을 것 같다.

https://st-lab.tistory.com/71

 

 

# 전체 코드

import java.util.Scanner;

public class ch8_1 {
    public static void main(String[] args) {
		/*
         A 고정 비용
         B 가변 비용
         C 책정된 가격

         C * n > A + (B * n) >> true일 때 손익분기점
        */

        // #1
        // Scanner sc = new Scanner(System.in);
        // int A = sc.nextInt();
        // int B = sc.nextInt();
        // int C = sc.nextInt();

        // #2
        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);
         }
    }
}