처음 문제를 보자마자 아 쉽네 하고 습관적으로 반복문으로 문제를 풀어봤다.

그런데 시간초과가 뜬다.

그 이유를 찾아보니 반복문을 쓰지 않고 풀어야 한단다..

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

+ Recent posts