이중 for문을 사용하여 좌표의 범위를 벗어나는 것들을 찾는 코드를 작성했다. 하지만 시간초과로 틀렸다.
def solution(k, d):
answer = (d//k+1)*(d//k+1)
max_d=k*(d//k)
for i in range(max_d, -1, -k):
for j in range(max_d, -1, -k):
if i*i+j*j>d*d:
answer-=1
else:
break
return answer
x²+y²=d²라는 공식에서 d와 x의 값을 알면 y의 최대값을 알 수 있다.
따라서 for문 하나만으로 풀 수 있다.
def solution(k, d):
answer = 0
for x in range(0, d+1, k):
y=int((d**2 - x**2)**0.5)
answer+=y//k+1
return answer