[백준] 1712번 : 손익분기점 - Java(자바)

이정우·2021년 9월 11일
0

백준

목록 보기
15/32

이번 문제는 손익분기점을 찾는 문제였습니다. 문제 자체는 어렵지 않았지만 자바의 여러 데이터 타입에 대해 아는지 모르는지 묻는 문제였습니다.

Step0. 해답 코드

package Basic_Math;

import java.util.Scanner;

public class Break_Even_Point_1712 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int fixed = sc.nextInt(); // 고정 비용
		int vari = sc.nextInt(); // 가변 비용
		int cost = sc.nextInt(); // 제품 가격
		int q; // BEF 매출액, 순익분기점 달성에 필요한 매출
		if (vari >= cost) { // 제품 1개 만드는 재료비(가변)가 제품 가격보다 비싸거나 같으면 무조건 손해.(모든 비용이 자연수(1,2,..)이기 때문에)
			System.out.println(-1);
		} else { // 제품 가격이 제품 재료비보다 높다면 어쨌든 팔면 이득이 생김.
			q =  fixed / (cost - vari); //손익분기점의 매출 개수 구하는 공식
			System.out.println(q + 1); //손익분기점에서 이득이 시작되는 부분을 찾아야 하므로+1
		}
	}
}

Step1. 풀이 접근

이번 문제에서는 손익 분기점의 이익이 시작하는 부분을 찾아야 했습니다. 처음에는 for문을 사용해서 풀어봤습니다. 입력 범위가 21억까지이므로 int 범위와 아슬아슬하게 걸리므로 long형 타입을 사용하여 풀었는데 결국 시간초과 오류가 발생하였습니다. 그래서 반복문으로 푸는 문제가 아니라는 것을 알았고 손익분기점에 대해 좀 찾아보니 손익분기점(BEP)에 관한 몇 가지 계산식을 찾을 수 있었습니다. 해당 계산식의 출처는 다음 계산식 출처를 클릭해서 봐주세요.계산식 출처 <<<<<<출처
계산식 중 BEP의 매출량, 즉 손익부기점에 달성할려면 몇 개를 팔아야 하는지를 구하는 Q를 사용해서 문제를 풀면 되겠다는 생각을 하였습니다.

Step2. 문제 풀이

1.고정, 가변, 제품 가격을 입력 받았습니다.

  1. 제품 생상 비용(가변 비용, vari)가 제품의 가격(cost)보다 비싸거나 같다면 제품을 아무리 팔아도 이득이 될 수 없으므로 -1을 리턴해줬습니다.
if (vari >= cost) { // 제품 1개 만드는 재료비(가변)가 제품 가격보다 비싸거나 같으면 무조건 손해.(모든 비용이 자연수(1,2,..)이기 때문에)
			System.out.println(-1);
		}
  1. 그 외의 경우는 무조건 제품 가격이 가변 비용보다 크므로 팔면 팔수록 이득이 발생하게 됩니다. 처음 이득이 발생하는 지점을 찾는 공식을 위에서 서술한 출처의 식을 사용하여 구해주었습니다.
else { // 제품 가격이 제품 재료비보다 높다면 어쨌든 팔면 이득이 생김.
			q =  fixed / (cost - vari); //손익분기점의 매출 개수 구하는 공식
			System.out.println(q + 1); //손익분기점에서 이득이 시작되는 부분을 찾아야 하므로+1
		}

여기서 이해가 안 가는 부분은 손익분기점의 사전적 의미를 찾아보니 수익과 비용이 같아지는 지점, 즉 1개라도 더 팔면 이득이고 덜 팔면 손해가 되는 지점을 가르킨다고 이해했습니다. 출처의 계산식도 이것을 기준으로 계산하였고요. 헌데 문제에서는 이득이 발생하는 지점을 손익분기점이라 칭하고 있습니다. 이 부분은 제 기준으로는 틀린게 아닌가 생각됩니다. 아무튼 기존 계산식은 손해도 이익도 아닌 지점을 구하기에 제가 원하는 이익이 시작하는 부분을 찾기 위해 +1을 해주었습니다.

Step3. 느낀 점

여기에 코드로는 쓰지 않았지만 처음 시도했던 for문을 통해 int형 long형 double형등의 범위에 관해 생각해 볼 수 있었습니다. 그 다음에 시도했던 계산식을 이용한 풀이를 통해서는 손익분기점에 대해 어떨결에 공부를 좀 했던거 같습니다!

출처 : 백준 1712번 https://www.acmicpc.net/problem/1712

profile
프로그래밍 공부 중!

0개의 댓글