본문 바로가기
Problem Solving/boj.kr (JS)

[BOJ / 자바스크립트] 1712 : 손익분기점

by hoiiiii 2022. 3. 12.

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

[1712번: 손익분기점

월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와

www.acmicpc.net](https://www.acmicpc.net/problem/1712)

Sol )

  1. 회계에서 이야기하는 손익분기점과는 다름 (최초의 이익 발생 시점의 판매량)
  2. ( 수입 - 변동비 ) * 판매량 > 고정비 가 되는 시점의 판매량
  3. 단 수입 <= 변동비 라면 절대로 고정비를 넘을 수 없기 때문에 -1 출력
  4. 주의사항 : 내림 연산에서 Math.floor을 사용하지 않고 parseInt를 사용할 경우 반례가 발생
    • 이유 : Math.floor은 수학에서의 내림 연산, parseInt는 소수부분을 잘라주는 연산
    • 음수의 경우 ( ex : -12.34 ) Math.floor은 -13을, parseInt는 -12를 출력
    • 매우 큰 숫자의 경우 (이 문제에서는 입력 범위 21억) : 6.022 * 10^23 같은 숫자에서 Math.floor은 내림 연산을 진행하겠지만, parseInt는 6.022e23 처럼 표현된 숫자의 소수부분을 잘라내 6을 표시해준다.
    • 이 문제의 경우 21억 범위까지 들어오기 때문에 지수표기법이 발생하는 경우 parseInt는 반례가 생길 수 있다. 

소스코드 )

const fs = require('fs');
const [a,b,v] = fs.readFileSync('/dev/stdin').toString().split('\n')[0].split(' ').map(Number);
if (v-b <= 0) result = -1;
else result = Math.floor(a/(v-b))+1
console.log(result)

댓글