Code&Data Insights
BaekJoon Algorithm - Stage 8 [1712, 2869] ( Python 3 ) 본문
BaekJoon Algorithm - Stage 8 [1712, 2869] ( Python 3 )
paka_corn 2022. 1. 18. 11:28
2022.01.21
# Stage 8 - [ 1712]
[1712] - 손익분기점
[first code]
a,b,c = map(int, input().split())
n = 0
while True:
if a + (b*n) == (c*n):
print(n+1)
break
elif b > c:
print(-1)
break
n += 1
---> 이렇게 하니까 예제 1,2번은 통과인데
마지막 숫자 큰 예제는 아웃풋 안나오고, 백준에서 시간초과가 떴다.
[new code]
a,b,c = map(int, input().split())
b_e_point = 0
if (b >= c):
print(-1)
else:
b_e_point = (a // (c-b)) + 1
print(b_e_point)
---> 처음에 if(b > c)로만 했더니 계속 ZeroDivision ERROR가 떠서
try-except 문으로 에러 제거 하니까 컴파일 에러가 떴다.
if 조건을 b>=c로 바꾸니까 바로 정답!
엄청 고민했던 문젠데 나름 쉽게 풀린거 같다.
# Stage 8 - [ 2869 ]
[ 2869 ] - 달팽이는 올라가고 싶다
[my code - (1)]
a,b,v = map(int, input().split())
h = 0
day = 0
for i in range(v):
h += a
h -= b
if h == v:
print(day)
break
elif h > v:
day += 1
print(day)
break
else:
day += 1
---> 또 시간초과 뜸 ㅠㅠ
아웃풋 적은 수는 정답인데 큰수 넣으니까 안나왔다..
위에거처럼 더 간단한 수식을 생각해야 하는듯..
[my code - (2)]
import sys
a,b,v = map(int, sys.stdin.readline().split())
h = 0
day = 0
for i in range(v):
h += a
h -= b
if h == v:
print(day)
break
elif h > v:
day += 1
print(day)
break
else:
day += 1
---> 반복문은 써야될거 같아서 어떻게 바꿀지 몰라서
일단 input()을 sys.stdin.readline()으로 바꿧는데 역시 시간초과..
달팽이야 그냥 올라가지 마라...
거의 두시간 동안 고민하다가 반복문 아니면 풀 방법을 모르겠어서 구글링했는데 역시
전 문제처럼 수학으로 푸는거였다..
답을 봐도 어렵다..^^
[정답]
import sys
a,b,v = map(int, sys.stdin.readline().split())
if(v-b)%(a-b) == 0:
print((v-b)//(a-b))
else:
print((v-b)//(a-b)+1)
하하하.....
'Algorithm > BaekJoon Online Judge' 카테고리의 다른 글
BaekJoon Algorithm - Stage 8 [2839 - 설탕 배달] ( Python 3 ) (0) | 2022.01.26 |
---|---|
BaekJoon Algorithm - Stage 10 [10872,10870] ( Python 3 / JAVA ) (0) | 2022.01.23 |
BaekJoon Algorithm - Stage 1 ~ 7 [Review] (0) | 2022.01.18 |
BaekJoon Algorithm - Stage 7 [ 5-10 ] ( Python 3 ) (0) | 2022.01.18 |
BaekJoon Algorithm - Stage 6[1], Stage 7 [ 1-4 ] ( Python 3 ) (0) | 2022.01.16 |