Algorithm/백준 단계별로 풀어보기

[백준 알고리즘 / Python] 기본 수학_1 - 1712번 손익분기점

베이비코더 2021. 9. 16. 22:29
반응형

고정비용 A, 가변비용 B, 판매가격 C 로 변수에 입력받았다.

A, B, C = map(int, input().split())

if A/(C-B) < 0:
    print(-1)
else:
    count = 1
    while True:
        if A+(B*count) < C*count:
            break
        count += 1
    print(count)

처음에는 단순하게 while문을 돌려서 손익분기점(count)을 찾아갔는데 시간초과가 났다.

 

나와 비슷한 사람이 질문한 글을 보고 수학적으로 생각해야된다는 답변이 있어 다시 풀었다.

A, B, C = map(int, input().split())

if C-B < 0:
    print(-1)
else:
   print((A // (C-B)) + 1)

분명 맞게 했는데 이번엔 런타임 에러(ZeroDivisionError)가 났고 0을 나눴을 때 생기는 오류였다.

 

A, B, C = map(int, input().split())

if C-B <= 0:
    print(-1)
else:
   print((A // (C-B)) + 1)

최종적으로 맞은 코드!

 

문제를 풀기 전에 메모장에 수식을 써봤다.

A + Bx < Cx C가 커질 때의 x를 찾아야 하니까 첫 번째 제출했던 코드의 if문 처럼 A(C-B)이 음수이면 -1을 출력하게 했다.

앞에 곱해진 A는 상관없어지니까 다음 제출할 땐 A를 지웠다.

 

런타임 에러가 안 나게 하기 위해 if 분기처리 때 0까지 포함시켰다.

반응형