상세 컨텐츠

본문 제목

JAVA. 백준 알고리즘 단계별 문제 8단계(문제 번호 1712 : 손익분기점)

공-부/백준 알고리즘

by 사랑짱 2021. 6. 7. 08:07

본문

(문제 1712)

A, B, C가 주어졌을 때, 손익분기점을 구하는 프로그램을 작성하시오.

* 손익분기점이란?
- 지불되어야 하는 모든 비용이 지불된 상태이고 특별한 이익이나 손실이 없는 경우

 

 

문제 해결 포인트

 

먼저, 문제에서 제시된 개념들을 정리하면 고정비용 A, 가변비용 B, 판매수입 C이다. 

손익분기점이란 이익이 발생하는 시점을 의미하는데 그 시점을 식으로 표현하면 다음과 같다.

손익분기점 : A + B * n < C * n (n : 컴퓨터 생산수량)

 

여기서 손익분기점이 제로인 상태를 구하면,

A + B * n = C * n
A = n(C-B)
n = A / (C-B)

 

결국 n은 컴퓨터 생산 수량이므로 +1을 해주면 손익분기점이된다.

 

또 한가지 고려해야할 점은, 

위 식을 해석하면 가변비용 B가 판매수입 C보다 작다면 손익분기점은 발생할 수 없다. 

따라서, B가 C보다 클 때 손익분기점을 계산하도록 프로그램을 작성해야 한다.

 

 

문제 해결 과정

 

1. 고정비용(A), 가변비용(B), 판매수입(C)을 입력받는다.

   (이때, A, B, C는 21억 이하의 자연수이므로 int타입으로 선언한다.)

   1-1. BufferedReader를 선언한다.

   1-2. BufferedReader는 엔터를 기준으로 입력을 받으므로 StringTokenizer를 통해

         공백을 기준으로 나눠주도록 한다.

   1-3. 공백을 기준으로 나눈 값을 변수 A, B, C에 대입한다.

 

2.  조건문을 통해 값을 출력한다.

   2-1. if문 - 손익분기점이 없는 경우(B >= C), '-1'이 출력되도록 한다.

   2-2. else문 - 위 내용을 바탕으로 손익분기점을 출력한다.

 

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
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
 
public class No01 {
 
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
        
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int A = Integer.parseInt(st.nextToken());    //고정비용
        int B = Integer.parseInt(st.nextToken());    //가변비용
        int C = Integer.parseInt(st.nextToken());    //판매수입
                
        if(B >= C) {
            System.out.println("-1");
        } else {
            System.out.println((A/(C-B))+1);
        }    //if-else
        
    }    //main
    
}    //End class
 
cs

 

 

관련글 더보기