본문 바로가기

자바 자료구조 & 알고리즘/알고리즘 문제 풀이

백준 1712번 - 손익분기점

문제

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

1000 70 170

출력

첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다. 손익분기점이 존재하지 않으면 -1을 출력한다.

11

 

내 코드

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int fixed = sc.nextInt();
    int variable = sc.nextInt();
    int price = sc.nextInt();
    int count = 1;
    
    if (variable >= price) {
      System.out.println(-1);
    } else {
      while (fixed + variable * count >= price * count) {
        count++;
      } 
      System.out.println(count);
      
    }
  }
}

 

손익 분기점은 총 비용 (고정 비용과 가변 비용 * 판매한 대수) < 총 수익 (가격 * 판매한 대수) 가 성립되는 최초의 판매한 대수가 될 것이다.

 

그런데 가변 비용보다 가격이 낮거나 같다면 총수익이 총비용을 넘길 지점은 존재하지 않을 것이므로 해당 조건일 때는 무조건 -1을 출력한다.

 

그렇지 않을 경우를 상정하고, 판매한 대수를 count = 1로 놓고 하나씩 count를 올려가면서 총비용과 총수익을 비교한다. 그리고 총수익이 총비용을 넘는 시점에 while문을 빠져나온다. 총수익이 총비용을 처음으로 넘기게 만든 count의 값이 답이 되므로 이를 출력한다.

 

틀렸습니다.

 

런타임 에러도 아니고 시간 초과도 아니고 틀렸습니다라서 황당하다. 물론 내 잘못이겠지만 답이 잘못 나온 경우를 아직 찾지 못해서 수정을 못했다. 일단 다음 스터디까지는 이렇게 보류할 것이다.