처음 문제를 보자마자 아 쉽네 하고 습관적으로 반복문으로 문제를 풀어봤다.
그런데 시간초과가 뜬다.
그 이유를 찾아보니 반복문을 쓰지 않고 풀어야 한단다..
import math
a,b,c = map(int, input().split())
BEP = a/(c-b) # a/(c-b) < BEP 을 만족해야한다.
if (BEP).is_integer() and BEP>0: #BEP가 정수이면서 0보다 클때
print(BEP+1) #BEP가 정수로 끝날때는 1을 더해준다.
elif (BEP).is_integer()==0 and BEP>0: #BEP가 정수가 아니면서 0보다 클때
print(math.ceil(BEP)) #BEP가 소수점으로 끝날때 올림을 한다.ex) 4.3이면 5를 반환
else: #음수일때는 -1를 반환한다.
print(-1)
이런식으로 생각을 했었다.
내 컴에서는 잘 작동이 됐으나, 답안을 제출하니 런타임 에러가 뜬다.
아 도저히 모르겠어서 모범답안을 찾아봤다.
a,b,c = map(int, input().split())
if c<=b:
print(-1)
else:
print(a//(c-b)+1)
그렇다. 괜히 쓸때없이 결과값이 정수일때 조건, 소수일때 조건 붙일 필요없이
몫연산자// 로 나눠주면 모든 소수점은 알아서 버림한다. 거기에 +1을 해주면 답이 완성
괜히 쓸때없이 장황하게 math함수부터 해서 is_integer()니 뭐니 헛짓을 할 필요가 없었다.
역시 모든 문제는 답을 보면 쉽고 간단하게 보인다. 실상은 많은 생각들을 하게 만들지만 말이다.
그래서 간단한 답을 봐도 허탈할 필요가 없다. 이 모든게 배움의 과정이라고 생각한다.
뭔가 깨달음을 준 문제였다.
'코딩' 카테고리의 다른 글
나의 코딩 연대기 (1) (0) | 2023.02.07 |
---|---|
[React] map 함수를 익혀보자 (0) | 2022.11.23 |
백준 5622번 다이얼 파이썬 (0) | 2022.10.17 |
백준 2908번 상수 파이썬 (0) | 2022.10.14 |
백준 2675번 문자열 반복 파이썬 (0) | 2022.10.14 |