감자튀김 공장🍟

[백준/1712] 손익분기점 (with 파이썬) 본문

Algorithm/BOJ

[백준/1712] 손익분기점 (with 파이썬)

Potato potage 2022. 10. 19. 13:55
반응형

✔ 문제


풀이

🙄 시간 초과

import sys
input = sys.stdin.readline

a, b, c = map(int, input().split())
x = 0

while True:
    x += 1

    if c - b < 0:
        print(-1)
        break
    elif (c - b) * x > a:
        print(x)
        break

문제를 해석하면 c * x > a + b * x 공식이 나오는데 양변을 x로 묶어서 정리하면 (c-b)x > a 라는 공식이 나온다.

그래서 c - b가 음수이면 손익분기점을 넘기지 못하므로 -1을 출력, 만약 (c-b)x가 a보다 크다면 그때의 x 값을 출력하도록 했다. 계속해서 시간초과 오류가 나서 import sys도 써보고 y = c-b 도 추가해봤지만 계속해서 시간 초과가 떴다. 아마 큰 수가 들어오면 while 문에서 시간이 오래 걸려서 그런 것 같다.

 

👽 수정 코드

a, b, c = map(int, input().split())

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

 

while문 없이 b가 c보다 크거나 같으면 바로 -1을 출력, c가 b보다 크다면 a//(c-b) + 1의 값을 출력하도록 했다.

a//(c-b)가 되는 과정은 아래와 같다.

더보기

먼저 손익 분기점을 위한 공식은

C * X > A + B * X 이다.

 

1) C * X > A + B * X

2) CX - BX > A

3) (C - B)X > A

4) X > A // (C - B)


후기

while문으로 해결하는 방법이 수가 크면 역시나 시간 초과가 뜬다.

그리고 while문 없이 공식으로만 해결할 수 있는 방법이 있었는데 공식 계산 거의 다 해놓고 마지막 키 포인트를 찾지 못했던 점이 아쉬웠다.

 

 

 

 

 

 

 

 

반응형
Comments