상세 컨텐츠

본문 제목

프로그래밍_파이썬_백준1712번_손익분기점

알고리즘/백준 온라인

by 혁오 2021. 11. 26. 16:25

본문

BIG

#알고리즘 #백준 #백준온라인 #파이썬 #C언어 #C++ #자바 #JAVA #JAVA SCRIPT #Python #python

오늘 풀어볼 문제는 백준 온라인 1712번 문제입니다!

문제부터 벌써 복잡해 보이지만 천천히 이해하면 됩니다.

우선 노트북을 판매하는 회사가 있는데, 이 회사의 손익분기점을 구하려고 합니다.

쉽게 말하면 손익분기점이란 회사의 이익이 + 되는 지점이라고 보면 되겠습니다.

A회사가 노트북을 만드는데 1200만원이 들어갔고, 노트북을 팔아서 1000만원을 벌었으면

A회사는 아직 손익분기점이 아닙니다.

만약 노트북이 조금 더 팔려서 1500만원이 됐다면 총 수입이 총 비용 1200만원보다 높아진 것이니 손익분기점을 돌파한 것 으로 볼 수 있습니다!

예제 입력 1번을 보시면

고정 비용이 1000, 가변비용이 70, 노트북 판매가 170 입니다. 편하게 원으로 계산해봅시다.

만약 노트북이 3대 팔렸다고하면

고정 비용 1000 + 70(가변비용) *3(노트북대수 ) -> 1000 + 210 = 1210 (총 지출)

170(노트북 판매가) * 3(노트북대수) -> 170*3 = 510 (총 수입)

1210 > 510 아직 총 지출이 총 수입보다 크므로 손익 분기점 구간이 아닙니다.

이 문제를 풀때에는 수학적 사고가 요구 되는데, 단순히 노트북을 1대부터 ~ 손익분기점 까지의 노트북 판매대수 로 반복문을 돌리게 되면 오류가 생기게 됩니다.

그 이유는 시간 제한이 0.35초 이므로 반복문을 돌려서 푸는 것은 출제자가 의도한 바가 아닐것 입니다.

그래서 생각한 것은

우선 가변비용 > 노트북 판매가 라면 절대로 손익분기점에 도달할 수 없다는 것을 알았습니다.

아무리 많은 노트북을 팔아도 생산비용이 더 많이 들어가기 때문에 손익분기점에 도달할 수 없기 떄문입니다.

if b>=c: # 가변비용이 노트북 판매가보다 크거나 같으면 손익분기점에 도달할 수없음!
    print(-1)

또한 우리는 21억이란 큰 숫자를 넣어서 반복문을 사용하지 않고 해결 해야되기 때문에 반복문 말고 다른 방법을

생각 해내야 합니다.

제가 생각한 것은

고정비용을 (노트북 판매가 - 가변비용)로 나누고 1을 더해주면 해당 식이 성립하는 것을 알아냈습니다.

else:
    print(int(a/(c-b) + 1)) #

위 값을 참고하여

1000 / /(170-70) + 1

ㄴ1000 //(100) +1

ㄴ 10+1 -> 11

즉 노트북 판매수 가 11대일때 이 값들을 넣었을때 손익분기점을 도달한다는 것을 알았습니다.

실제로 맞는지 검토를 해보겠습니다.

판매수가 10대일 때

1000 + 70*10 -> 1700

170 * 10 -> 1700

판매수가 11대일 때

1000 + 70*11 -> 1770

170 * 11 -> 1870

실제로 11대일 때 손익분기점을 도달하는 것을 알아냈습니다.

코드는 이렇게 됩니다.

a = int(input())
b = int(input())
c = int(input())
if b>=c:
    print(-1)
else:
    print(a//(c-b) + 1)

정말 어려운 수학 능력이 요구 되는 것 같지만, 생각만 잘 한다고 하면 실제 코드는 3~5줄 채 되지 않습니다.

수학적으로도 코딩적으로도 도움이 많이 됐던 것 같습니다.

 

BIG

관련글 더보기