알고리즘

[백준/Java]Q1712

  • -
반응형

백준 알고리즘 8단계 기본 수학1 1712번 문제입니다.


Q. 월드전자는 노트북을 제조하고 판매하는 회사이다.
노트북 판매 대수에 상관없이 매년 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 총 B만원의 가변 비용이 든다고 한다. 노트북 판매 가격을 C라고 했을 때, 손익분기점(총 수입이 총 비용보다 많아지게 되는 지점)을 구하는 프로그램을 작성하시오.

[입력]
- 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다.
- A : 고정 비용
- B : 가변 비용
- C : 판매 가격

[조건]
- A, B, C는 21억 이하의 자연수이다.
- 첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다. 손익분기점이 존재하지 않으면 -1을 출력한다.

 

풀이

손익분기점을 구하는 문제였다.

고정 비용과 가변 비용을 더한 값보다 판매 가격이 높아지는 지점을 구해야 했다.

고정 비용을 a, 가변 비용을 b, 판매 가격을 c라고 가정하고 해당 지점을 구하기 위한 변수 i를 양 변에 곱했다.(고정 비용 제외) 그리고 i를 구하기 위해 계산을 하다보니 아래와 같은 식을 구할 수 있었다.

 

1. a + (b * i) < c * i
2. a/i + b < c
3. a/i < c - b
4. a < (c - b) * i
5. (170 - 70) * i = 1000(판매 가격을 170, 가변 비용을 70, 고정 비용을 1000으로 가정)
6. i = 10

판매 가격이 높아지는 경우는 i가 10이 되는 지점이었다. 이 때, 가변 비용이 판매 가격보다 낮거나 같다면 손익분기점이 존재할 수 없었다.

 

소스
package com.baek.algo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Q1712 {

	public static void main(String[] args) throws IOException {
		BufferedReader bf  = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine(), " ");

		int a = Integer.parseInt(st.nextToken());
		int b = Integer.parseInt(st.nextToken());
		int c = Integer.parseInt(st.nextToken());
		int point = 1;

		// 가변 비용이 판매 가격보다 높거나 같다면 손익분기점이 존재하지 않음
		if(b >= c) {
			point = -1;
		} else {
			point = (a / (c - b)) + 1;
		}

		System.out.println(point);

		bf.close();
	}
}
반응형

'알고리즘' 카테고리의 다른 글

[백준/Java]Q1193  (0) 2021.07.13
[백준/Java]Q2292  (0) 2021.07.12
[백준/Java]Q1316  (0) 2021.07.08
[백준/Java]Q1712  (0) 2021.07.08
[백준/Java]Q1065  (0) 2021.07.08
Contents

포스팅 주소를 복사했습니다.

이 글이 도움이 되었다면 공감 부탁드립니다.