상세 컨텐츠

본문 제목

[백준] 1712번 손익분기점 (c++)

프로그래밍/백준 c++

by montgras 2021. 7. 5. 15:29

본문

반응형

[문제] https://www.acmicpc.net/problem/1712

 

1712번: 손익분기점

월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와

www.acmicpc.net

 


[풀이]

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

2. 생산대수를 계산한다.

 


수학 문제라 딱히 필요한 스킬은 따로 없다.

다만, 21억 이하라는 크기 제한이 있기 때문에 자료형의 크기만 고려해주면 된다.

21억은 int 자료형의 범위 안에 있기 때문에 int면 충분하다.

 

근데 분명 수학문제인거 알고 갔는데도 아무 생각없이 for문 썼다가 답이 안 나와서 한참 고민했다. 깨닫고 멍청이 인증하고 있다고 생각했다.

 

 

(1차 시도)

#include <iostream>

using namespace std;

int main() {
	int A, B, C;
	int i;

	cin >> A >> B >> C;

	if (B >= C) {
		cout << -1;
		return 0;
	}

	for (i = 1; ; i++) {
		if (A + B * i < C * i) break;
	}

	cout << i << endl;

	return 0;
}

for문을 계속 돌려야하기 때문에 오래 걸리고, 또 일정 숫자 이상이면 안 돌아갈 수 있다. 위 문제의 예제 입력 3번만 봐도 요상한 값을 출력해낸다.

 

 

(2차 시도)

#include <iostream>

using namespace std;

int main() {
	int A, B, C;

	cin >> A >> B >> C;

	if (B >= C) { //손익분기점이 없는 경우
		cout << -1;
		return 0;
	}

	cout << (int)A/(C-B) + 1 << endl; //int로 소수점 자리를 제거, 분기점은 정수라 +1

	return 0;
}

아예 수학적으로 접근해서 계산만 수행하도록 수정했다.

 

가격에서 가변금액을 제외한 순이익(C-B)이 몇 대 팔려야 고정비용(A)을 넘기는 손익분기점을 넘기는지 계산해주면 된다. 만약 순이익이 없다면, 아무리 많이 팔아도 손익분기점을 넘길 수 없을 것이다. 때문에 별다른 계산 없이도 조건문 하나로 해결할 수 있다.

반응형

관련글 더보기

댓글 영역