-
[백준 1712번] 손익분기점 (feat. NodeJS)Development/Program Solving 2021. 1. 6. 01:12728x90
아래와 같이 무한루프를 돌려서 1씩 수량을 증가시켜서 했더니, 시간초과 결과가 나왔다.
입력이 21억 이하이므로 이런식으로 무한루프를 사용한 알고리즘을 작성하면 안된다.
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input; const onInput = (value) => (input = value); const onClose = () => { const [a, b, c] = input.split(" "); let quantity = 1; if (Number(b) > Number(c)) { console.log(-1); } else { while (1) { const cost = Number(a) + Number(b) * quantity; const sellingPrice = Number(c) * quantity; if (cost < sellingPrice) { break; } quantity++; } console.log(quantity); } process.exit(); }; rl.on("line", onInput).on("close", onClose);
문제에서 손익분기점을 구하는 식은 다음과 같다.
A+BX < CX
A < CX-BX
A < X(C-B)
B>=C이면 음수이므로, 손익분기점이 없다.
손익분기점 수량을 구하기 위해 식을 수정하면 다음과 같다.
A = X(C-B)
A/(C-B) = X
A/(C-B) + 1 = 손익분기점 수량
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input; const onInput = (value) => (input = value); const onClose = () => { const [a, b, c] = input.split(" ").map((value) => Number(value)); if (b >= c) { console.log(-1); } else { console.log(Math.floor(a / (c - b)) + 1); } process.exit(); }; rl.on("line", onInput).on("close", onClose);
수학 알고리즘은 식부터 세워서 정리한 뒤, 로직 작성해야겠다.
728x90'Development > Program Solving' 카테고리의 다른 글
[백준 10870번] 피보나치 수 (feat. NodeJS) (0) 2021.01.07 [백준 2292번] 벌집 (feat. NodeJS) (0) 2021.01.06 [백준 단계별로 풀어보기] 7. 문자열 (feat. NodeJS) (0) 2020.12.29 [백준 단계별로 풀어보기] 6. 함수 (feat. NodeJS) (0) 2020.12.27 [백준 단계별로 풀어보기] 3. for문 (feat.NodeJS) (0) 2020.12.25