[Baekjoon] 1717번 문제풀이 - 손익분기점

2020. 8. 11. 14:15Computer Sciences/Problem Solve

이 문제의 핵심은 2가지입니다. 첫 번째는 손익분기점을 계산하는 알고리즘, 그리고 손익분기점이 존재하지 않는다는 조건을 생각하는 것입니다.

 

먼저 첫 번째를 생각해봅시다. 고정비용(a)은 말 그대로 고정되어있고, 가변비용(b)은 제품을 생산할 때마다 증가합니다. 판매익(c)은 제품을 판매할 때마다 증가하구요. 그렇다면 알고리즘은 간단합니다.

a + b * i < c * i 일 때의 i값이 손익분기점이 됩니다.

수학식으로 정리하면 a/(c-b) < x 입니다.

 

그럼 이제 두 번째를 생각해봅시다. 손익분기점이 존재하지 않는다는 것은 무슨 뜻일까요? 바로 제품의 가격이 가변비용보다 작을 때를 말합니다. 생각해봅시다. 내가 제품을 만들 때 들어간 비용이 1000원이라고 칩시다. 그런데 이 제품의 가격을 1000원과 같거나 작게 책정하면 내가 제품을 판매하더라도 이윤이 남지를 않겠죠? 같은 원리입니다. 제품의 가격이 가변비용보다 커야 우리가 돈을 벌 수 있고, 손익분기점 또한 존재할 수 있습니다. 코드를 봅시다.

 

import java.util.Scanner;

public class Baekjoon1712 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int fixedCost = scanner.nextInt();
        int variableCost = scanner.nextInt();
        int commodityPrice = scanner.nextInt();
        int breakEvenPoint = 0;

        scanner.close();

        if (variableCost >= commodityPrice)
            breakEvenPoint = -1;
        else {
            int i = 1;
            while (true) {
                if (fixedCost / (commodityPrice - variableCost) < i) {
                    breakEvenPoint = i;
                    break;
                }
                i++;
            }

        }

        System.out.println(breakEvenPoint);
    }
}