728x90
반응형
1. 문제 보기
해당 문제는 문제 링크를 통해 보실 수 있습니다.
2. 풀이 코드
#include <stdio.h>
int main(void) {
int year_cost = 0;
int produce_cost = 0;
int product_cost = 0;
int break_even_point = 0;
if (scanf("%d %d %d", &year_cost, &produce_cost, &product_cost) == NULL) {
return 0;
}
// 값을 나누기 전에, 값이 0이라면 -1을 출력하도록 합니다.
if (year_cost == 0 || (product_cost - produce_cost) == 0) {
printf("-1\n");
return 0;
}
// 손익 분기점을 계산합니다.
break_even_point = year_cost / (product_cost - produce_cost) ;
// 손익 분기점을 출력합니다.
if (break_even_point < 0)
printf("-1\n");
else
printf("%d\n",(break_even_point+1));
return 0;
}
3. 문제 풀이
문제의 요구 조건
- 시간 제한: 0.35초
- 출력 조건: 손익분기점이 최초로 발생하는 판매량 찾기
시간 제한과 관련하여
이 문제는 시간 제한이 1초도 되지 않습니다. 즉, 반복문 같은 것은 쓸 수도 없다는 이야기가 됩니다. 따라서, 산술 연산을 통해 출력값을 찾아야 함을 의미합니다.
손익분기점 계산식 (일반식)
이 문제에서 손익 분기점은 다음과 같은 식을 성립하면 됩니다.
(왜 이런식이 나왔는지는 한번 생각해보시기 바랍니다.)
1번식: 1년 고정 비용(year_cost) + (생산 비용(produce_cost) * 생산한 물건의 갯수) - (상품의 가격(product_cost) * 생산한 물건의 갯수) > 0
여기서 식을 정리하면 다음과 같은 식이 나옵니다.
2번식: 1년 고정 비용(year_cost) > (생산 비용(produce_cost) * 생산한 물건의 갯수) - (상품의 가격(product_cost) * 생산한 물건의 갯수)
3번식: 1년 고정 비용(year_cost) > (생산 비용(produce_cost) - 상품의 가격(product_cost)) * 생산한 물건의 갯수
여기서 1년 고정 비용(year_cost)에서 (생산 비용(produce_cost) - 상품의 가격(product_cost))를 나누면 생산한 물건의 갯수. 즉, 얼만큼 이상은 생산해야 한다는 물건의 갯수가 나옵니다. 따라서 손익분기점 계산을 코드에서는 다음과 같이 구현하였습니다:
break_even_point = year_cost / (product_cost - produce_cost) ;
손익분기점 계산식 (예시)
혹시 위 설명이 이해가 안가시는 분을 위해, 예시를 들어 설명드리겠습니다.
예시에서 사용한 입력값은 다음과 같습니다:
- 1년 고정 비용(year_cost): 1000
- 생산 비용(produce_cost): 70
- 상품의 가격(product_cost): 170
1번식: 1000 + (70 * 생산한 물건의 갯수) - (170 * 생산한 물건의 갯수) > 0
2번식: 1000 > (170 * 생산한 물건의 갯수) - (70 * 생산한 물건의 갯수)
3번식: 1000 > 100 * 생산한 물건의 갯수
그럼 이 식에 따라 1000 / 100을 하면, 10이라는 값이 나옵니다. 그런데, 여기서의 손익분기점은 손실과 이익이 교차하는 부분이 아닌, 이익이 발생하는 최소한의 판매량을 요구하고 있습니다. 따라서, 구한 10이라는 값에 1을 더합니다. 출력값으로는 11이 출력되도록 합니다.
반응형
'컴퓨터 관련' 카테고리의 다른 글
[알고리즘] 백준 3009번 문제 풀이 (2) | 2024.01.06 |
---|---|
[컴파일러 구성] flex와 bison으로 간단한 계산기 만들기 (1) | 2024.01.06 |