[백준] C# : 손익분기점 (1712번)

ssu_hyun·2022년 8월 10일
0

Data Structure & Algorithm

목록 보기
50/67
post-thumbnail
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Baekjoon
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] s = Console.ReadLine().Split()
            long a = long.Parse(s[0]);  // 고정비용
            long b = long.Parse(s[1]);  // 가변 비용
            long c = long.Parse(s[2]);  // 노트북 가격
            // n = 노트북 수 (임의 지정)
            // 노트북 생산 비용 = a + b * n
            // 노트북 판매 비용 = c * n 
            // 위 두 방정식을 통해 n값을 구해 조건 작성
            
            if (b >= c)
            {
                Console.WriteLine(-1);
            }
            else
            {
                if (a / (c - b) < 0)
                {
                    Console.WriteLine(-1);
                }
                else
                {
                    Console.WriteLine(a / (c - b) + 1);
                }
            }
        }
    }
}

우선 A, B, C가 21억 이하의 자연수이므로 해당 코드의 자료형을 long으로 설정해준다. 다음으로 생산 비용과 판매 비용을 구하기 위해 '노트북 수'를 의미하는 n을 임의로 지정해준다. n을 통해 생산 비용과 판매 비용을 구하게 되면 각각 아래의 식이 성립이 된다.

  • 생산 비용 = a + b*n
  • 판매 비용 = c*n

여기서 a, b, c는 문제에서 주어지는 수이므로 상수 취급하고 다시 식을 보면 두 식이 n이라는 미지수에 대한 방정식이라는 것을 알 수 있다. 두 방정식을 n과 y에 대한 그래프로 그려보면 a + b*n의 경우 (1)b>c (2)b=c (3)b<c 의 3가지 경우로 위와 같이 그려질 수 있다. 판매 비용이 생산 비용을 넘어서는 손익분기점이 존재하기 위해서는 두 그래프의 교차점이 양수 부분에서 나와야 하는데 이러한 조건을 충족할 수 있는 것은 (3)b<c뿐이다. 즉 b>=c의 조건에서는 손익분기점을 구할 수 없다는 것이 성립된다. (쉽게 생각하면 생산 비용의 값의 변화에 영향을 미치는 것은 b, 판매 비용의 값의 변화에 영향을 미치는 것은 c인데 b가 c보다 크거나 같으면 판매 비용이 증가폭이 생산 비용이 증가폭을 넘어설 수 없다.)

손익분기점을 구하기 위해 두 방정식이 교차하는 지점에 대한 식을 세워보면 아래와 같다.

bn + a = cn
cn - bn = a
(c-b) n = a
n = a / (c-b)

생산 비용과 판매 비용이 같아지는 지점이 0보다 크면 손익분기점을 구할 수 있고, 해당 지점이 0보다 작으면 손익분기점을 구할 수 없으므로 해당 점을 의미하는 a / (c-b)이 0보다 작을 경우 -1을 출력하고 나머지 경우에는 입력받은 a, b, c값을 통해 손익분기점을 구한다.

여기서 주의해야할 점은 손익분기점은 '총 수입이 총 비용보다 많아져 이익이 발생하는 첫번째 지점'이므로 생산 비용과 판매 비용이 같아지는 지점인 a / (c-b) + 1로 구해야 한다는 점이다.

0개의 댓글