728x90
Code
😢 21억 조건을 못 보고 반복문을 돌려 counter를 하나씩 증가시키려고 했다.. 잘못된 방법!
😊 역시나 수학 카테고리답게 다항식을 이용해서 풀면 쉽게 풀 수 있다.
A는 고정 비용, B는 가변 비용, C는 판매 가격이다.
판매 누적 금액이 고정비용+가변 누적 비용을 넘어서면 손익분기점을 넘어간다.
식을 만들어 본다면, A + Bx < Cx로 만들 수 있다.
식을 정리해보자. A < Cx - Bx로 Bx를 넘겨주고, A < (C-B)x 로 정리해주면 조금 더 보기 쉽다.
즉, C-B가 0이하(즉, 0 또는 음수)로 떨어지면 손익분기점은 없다. 계속 적자다..ㅎㅎ
손익분기점이 없어서 '-1'을 출력하는 조건문은 2가지 정도로 표현할 수 있다.
1. if(C-B <= 0) { console.log(-1); }
A < (C-B)x 식을 생각해서 C-B가 0이하면 손익분기점은 없다고 표현할 수 있다.
2. if(C <= B) { console.log(-1); }
C-B > 0이 돼야하므로, C <= B으로 정리해주면 손익분기점이 없다고 표현할 수 있다.
Full Code
// Break-Even Point |
// 1st Solution(other) |
// For submit |
// const fs = require('fs'); |
// const input = fs.readFileSync('/dev/stdin').toString().trim().split(' '); |
// For local test |
const input = ['1000', '70', '170']; |
const A = parseInt(input.shift()); |
const B = parseInt(input.shift()); |
const C = parseInt(input.shift()); |
const netProfit = C - B; |
if (netProfit <= 0) { |
console.log(-1); |
} else { |
console.log(Math.floor(A / netProfit) + 1); |
} |
// 2nd Solution(ohter) |
// For submit |
// const fs = require('fs'); |
// const input = fs.readFileSync('/dev/stdin').toString().trim().split(' ').map(num => parseInt(num)); |
// For local test |
// const input = ['1000', '70', '170'].map(num => parseInt(num)); |
// const A = input.shift(); |
// const B = input.shift(); |
// const C = input.shift(); |
// if (C <= B) { |
// console.log(-1); |
// } else { |
// console.log(Math.floor(A / (C - B)) + 1); |
// } |
'Algorithm > JavaScript(Node.js)' 카테고리의 다른 글
백준 2292번: 벌집(Honey Comb) Node.js(JavaScript) (0) | 2020.01.13 |
---|---|
백준 2839번: 설탕 배달(Sugar Delivery) Node.js(JavaScript) (0) | 2020.01.11 |
백준 1316번: 그룹 단어 체커(Group Word Checker) Node.js(JavaScript) (0) | 2020.01.09 |
백준 2941번: 크로아티아 알바펫(Croatia Alphabet) Node.js(JavaScript) (0) | 2020.01.06 |
백준 5622번: 다이얼(Dial) Node.js(JavaScript) (0) | 2020.01.06 |