문제
월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 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
'Algorithm > Baekjoon(Node.js)' 카테고리의 다른 글
| [JavaSrcipt] Baekjoon - 1193 : 분수찾기 (0) | 2021.09.21 |
|---|---|
| [JavaSrcipt] Baekjoon - 2292 : 벌집 (for,while) (0) | 2021.09.20 |
| [JavaSrcipt] Baekjoon - 1316 : 그룹 단어 체커 ([...arr]전개연산자) (0) | 2021.09.18 |
| [JavaSrcipt] replace (0) | 2021.09.17 |
| [JavaSrcipt] Baekjoon - 2941 : 크로아티아 알파벳 (replace) (0) | 2021.09.17 |