문제 링크
https://www.acmicpc.net/problem/1712
나의 코드 1 (Python) - 시간초과
a, b, c = map(int, input().split()) # 입력
tmp = 0 # c(판매액)의 값을 올릴 변수
cnt = 0 # 몇 개 팔아야 이득?
if b >= c: # b가 c보다 크거나 같으면 절대 손익 분기점을 넘을 수 없음
print(-1)
else:
while a >= tmp: # 생산단가가 판매액보다 작아질때까지
a += b # 고정비용 + 가변비용
tmp += c # 판매액
cnt += 1 # 카운팅
print(cnt)
위는 처음 짠 코드입니다.
단순히 (고정비용 + 가변비용)이 판매액보다 커질 때를 구하는 코드를 짰습니다.
하지만 이런 경우 예제 입력 3 을 통과하려면 연산량이 말도 안되게 커서 시간초과를 하였습니다.
# 예제 입력 3
2100000000 9 10
나의 코드 2 (Python) - 정답
a, b, c = map(int, input().split()) # 입력
if b >= c: # 가변비용이 판매액보다 큰 경우
print(-1)
else:
print(a // (c - b) + 1)
이 경우는 조금 더 수학적인 접근입니다. 고정비용을 (판매액 - 가변비용)으로 나눈 것에 1을 더 한 값이 바로 손익분기점이 됩니다.
'코딩공부 > 백준 (python)' 카테고리의 다른 글
[백준 1193] 분수찾기 (Python) (0) | 2022.03.20 |
---|---|
[백준 2292] 벌집 (Python) (0) | 2022.03.19 |
[백준 1316] 그룹 단어 체커 (Python) (0) | 2022.03.18 |
[백준 2941] 크로아티아 알파벳 (Python) (2) | 2022.03.18 |
[백준 5622] 다이얼 (Python) (0) | 2022.03.17 |
댓글