일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 페이지네이션
- 버블정렬
- kakao map api
- Node js
- 이벤트 루프
- sort
- 코딩테스트
- 정규표현식
- OSI 7계층
- 유데미
- 백준
- Native select
- input class
- 프론트엔드
- 코드스테이츠
- CSS
- 알고리즘
- 배열
- MUI
- react js
- 자바스크립트
- 자료구조
- 백준 nodeJS
- nodejs
- primitive type
- 재귀함수
- 코드스테이츠 메인프로젝트
- javascript
- next/Image
- JavaScript Deep Dive
- Today
- Total
신입 개발자에서 시니어 개발자가 되기까지
[백준 nodeJS] 1712 손익분기점(parseInt는 버림 용도가 아니다) 본문
문제
월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 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을 출력한다.
실패 코드
const fs = require("fs");
const [fixedCost, variableCost, price] = fs
.readFileSync("example.txt")
.toString()
.trim()
.split(" ");
if (+price <= +variableCost) return console.log(-1);
let break_Even_Point =
1 + parseInt(fixedCost) / (parseInt(price) - parseInt(variableCost));
console.log(break_Even_Point);
이 코드가 실패한 이유
문자열을 정수로 변환하기 위해 parseInt를 사용했기 때문이다.
1) parseInt('123abc') // 123 (NaN이 반환되지 않는다)
2) parseInt('-1234.5678') // -1234 (Math.floor라면 -12345)
3) 0.000000000000003과 같은 값이 입력되면 parseInt는 0이 아니라 3이 반환된다. 이 수는 3e-14로 간주되고, 맨 앞의 정수 3이 반환되기 때문이다.
결론
parseInt를 Math.floor로 변경해야 통과한다.
'javascript > 알고리즘' 카테고리의 다른 글
[백준 nodeJS] 1269번 대칭 차집합 (0) | 2022.10.14 |
---|---|
[백준 nodeJs] 1764 듣보잡(feat. sort메서드) (0) | 2022.10.13 |
[백준 nodeJS] 10815 숫자 카드(이분탐색) (0) | 2022.10.11 |
[백준 nodeJS] 브루트포스 2231 분해합 (0) | 2022.10.10 |
[백준 nodeJS] 브루트포스 2798번 블랙잭 (0) | 2022.10.10 |