시간초과 에러를 피하기 위한 long 또는 float 형 입력 방법 - goormEDU

Q&A

It is a place to ask and answer questions related to IT technology.

0
시간초과 에러를 피하기 위한 long 또는 float 형 입력 방법
profileglitch
03/06/21, 05:28 PM
Question Path :

안녕하세요. 코딩 몬스터님 픽셀 수 세기 문제를 풀다가 질문사항이 발생하여 질문을 드리게 되었습니다.

[질문1] 테스트 케이스 중 반지름의 숫자가 커지면 계산시간 초과 에러가 발생해서 테스트 케이스를 통확하지 못하고 있습니다.

그래서 반지름이나 픽셀 갯수를 세는데 사용되는 인자들(x, y 값)을 float 형으로 형변환을 하려고 했으나 형변화를 하면 type error가 발생해서 해결을 못하고 있습니다.

한 번 살펴봐 주시고 해결책을 제시해 주시면 감사하겠습니다.

코드는 아래와 같습니다.

def isInside(x,y,r): sqd = x * x + y * y if(sqd < r*r): return 1 else: return 0 def testCase(tc): testcase = tc+1 r = int(input()) sum = 0 for x in range(0,r,1): h = 0 #range (r,-1,-1) 까지해야 y가 0까지 줄어든다. for y in range(r,-1,-1): if isInside(x,y,r): h = y+1 break sum = sum + h print("#"+str(testcase)) print(sum*4) n = int(input()) for i in range(0,n,1): testCase(i)

[질문2] 추가적으로 질문이 더 있는데요 왜 y 값 부분을 for y in range(r,-1,-1): 형식으로 작성해야 정답이 나오는지 궁금합니다.

제가 위의 코드를 시도하기 전에는

for y in range(0,r,1): if isInside(x,y,r): h = y+1 break

로 코드를 짜도 괜찮을 것 같은데 결국 제대로 정답을 도출하지 못하던데요. 0부터 r까지 올라가나 r에서 0까지 내려오나 결국 같을 것으로 생각했는데 왜 첫번재 코드 처럼 range(r,-1,-1)을 하면 제대로 정답을 도출하고

range(0,r,1)로 하면 제대로 정답을 도출하는지 못하는지도 가르쳐 주시면 감사하겠습니다.