Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 정렬
- 공부
- web
- 코드업
- 알고리즘
- 협업
- react
- 파이썬
- Operating System
- codeup
- react-redux
- CPU 스케줄링
- 백준
- 일상
- 리덕스장바구니
- OS
- 분할메모리할당
- 기초100제
- Redux
- 자료구조
- 프로그래머스
- js to ts
- 타입스크립트
- memory
- C++
- Spring
- 스프링
- Java
- error
- 토이프로젝트
Archives
- Today
- Total
감자튀김 공장🍟
[백준/1712] 손익분기점 (with 파이썬) 본문
반응형
✔ 문제
✔ 풀이
🙄 시간 초과
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문 없이 공식으로만 해결할 수 있는 방법이 있었는데 공식 계산 거의 다 해놓고 마지막 키 포인트를 찾지 못했던 점이 아쉬웠다.
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[백준/1193] 분수찾기 (with 파이썬) (0) | 2022.10.21 |
---|---|
[백준/2292] 벌집 (with 파이썬) (0) | 2022.10.20 |
[백준/1316] 그룹 단어 체커 (with 파이썬) (0) | 2022.10.18 |
[백준/2941] 크로아티아 알파벳 (with 파이썬) (0) | 2022.10.17 |
[백준/5622] 다이얼 (with 파이썬) (0) | 2022.10.15 |
Comments