Algorithm/Baekjoon(Node.js)

[JavaSrcipt] Baekjoon - 1712 : 손익분기점

비망노트 2021. 9. 19. 18:20

문제

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

 

❌ 풀이

const input=require('fs').readFileSync('/dev/stdin').toString().split(' ');
let costs= input.map(x=>Number(x));

function BreakEven(a,b,c){
    
    if(b>c){
       return -1;
    }
    else{
      for(var i=0;;i++){
          if(c*i>a+(b*i)){
              break;
          }          
        }
    return i ;
    }
    
}

console.log(BreakEven(...costs))

 

i를 판매량이라고 가정하고

판매가격과 가변비용에 i를 곱해 고정비용+(가변비용*판매량)이 판매가격*i를 비교해서

판매가격*i 즉 총수입고정비용+(가변비용*판매량) 즉 총비용보다 클경우

지금까지 판매한 판매량 i를 리턴하는 함수를 만들었다.

틀렸다. hashcode 코드실행기에서는 제대로 값이 나오는데

제출하니 틀렸다고만 나와서 함수를 사용하지않고도 해보았는데

역시 코드실행기는 맞았다고 나오지만 백준제출에서는 틀렸다고 나왔다.

 

결국 구글링..

 

✅ 다른분의 풀이

let input = require('fs').readFileSync('/dev/stdin').toString().split(' ');

const A = input[0] * 1;
const B = input[1] * 1;
const C = input[2] * 1;

const margin = C - B;
const count = Math.floor(A / margin) + 1

console.log(margin <= 0 ? -1 : count);

 

마진 = 판매가격 - 가변비용을 선언해

count = Math.floor(고정비용/마진) + 1 을 한다.

 

예제 2의경우 마진 2-1은 0보다 작으므로

-1을 출력하고

 

아닐경우 즉,

예제1 1000/100 즉10대를 팔면 이익도 손해도아닌 0의상태이고

그 상태에서 +1을 하면 이익이 나니 11이 count에 들어가고

count를 출력한다.

 

판매가격-가변비용 즉, 마진이 고정비용을 넘으면 되는것이다.

 

 

 

반복문없이 이렇게 표현할수있을줄을 생각을 못했다..

당연히 반복문으로 판매량을 하나씩 늘려가며 계산해야하는줄 알았는데

생각해보니 그럴경우 예제3처럼 큰값이 들어가면 오래걸리기때문에 무리가있을것같다.

 

 

-출처

https://www.acmicpc.net/problem/1712