https://school.programmers.co.kr/learn/courses/30/lessons/140107
import math
def solution(k, d):
answer=d//k+1 #(0,0)~(d,0)까지 점의 갯수
for i in range(0,d+1,k):
point=math.sqrt(d**2-i**2) # y의 최대값(대각선의 제곱-x축의 제곱)
answer+=point//k # 점의 갯수의 합
return answer
(0,0)부터 (d,0)까지 점을 먼저찍고, x축을 기준으로 k씩 증가하면서 점을 찍어나간다고 생각하고 풀이하였다.
예를 들어, k가 2, d가 4인 경우,
처음에 (0,0), (2,0), (4,0) 총 3개의 점을 찍는다. = d//k +1
이후에 0부터 2씩 x축을 증가시키면서 가능한 점을 y축 기준으로 찍어나간다.
x값이 0일 때, y축의 최대값은 4(16-0의 제곱근)가 된다.
따라서 찍을 수 있는 점의 개수는 (0,2), (0,4) 총 2개 = 4//2
다음으로 x값이 2 증가하면 y축의 최대값은 3.464(16-4의 제곱근)가 된다.
따라서 찍을 수 있는 점의 개수는 (2,2) 총 1개 = 3.464//2
마지막으로 x값을 다시 2 증가시키면 y축의 최대값은 0(16-16의 제곱근)이 된다.
따라서 찍을 수 있는 점의 개수는 0개
최종적으로 3 + 2 + 1 = 6개 가 된다.