1. 문제
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 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억 이하의 자연수이다.
2. 예시
3. 풀이
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int fixedCost = Integer.parseInt(st.nextToken()); // 고정비용
int variableCost = Integer.parseInt(st.nextToken()); // 가변비용
int price = Integer.parseInt(st.nextToken()); // 판매가
int break_evenPoint = 0; // 손익분기점
if(variableCost >= price) { // 판매가보다 가변비용이 높으면 아무리 팔아도 적자
break_evenPoint = -1;
} else {
break_evenPoint = fixedCost / (price - variableCost) + 1;
}
bw.write(break_evenPoint + "\n");
bw.flush();
bw.close();
br.close();
}
}
4. 메모
- 속도를 줄이는 것이 관건!
- 계산하고 결과 값이 음수일 경우 답(break_evenPoint)을 '-1'로 변환해주는 방법으로 풀이했을 경우, 속도 오류 발생
//오답 풀이
int answer = fixedCost / (price-variableCost) + 1;
if(break_evenPoint < 0){
break_evenPoint = -1;
}
'공부 > CodingTest' 카테고리의 다른 글
[프로그래머스/SQL] 조건에 부합하는 중고거래 댓글 조회하기 (1) | 2023.07.16 |
---|---|
[백준/2292] 벌집 (0) | 2022.11.25 |
[프로그래머스] 신규 아이디 추천 (0) | 2021.08.09 |
[프로그래머스] 1주차 (0) | 2021.08.09 |
[백준/1316] 그룹 단어 체커 (Java 11) (0) | 2021.06.10 |