import java.util.*;
class Solution {
public long solution(int k, int d) {
long answer = 0;
for(int i = 0; i <= d; i += k) {
answer += getCnt(getY(i, d), k);
}
return answer;
}
public static int getY(int x, int d) {
return (int) Math.sqrt(Math.pow(d, 2) - Math.pow(x, 2));
}
public static int getCnt(int y, int k) {
return (y / k) + 1;
}
}
2. 구현 로직
X를 K만큼 증가시키면서 주어진 D값과 피타고라스 정리를 이용해서 Y값을 구해보려고 한다.
getY함수에 X와 D 값을 넣게 되면 Y값이 구해지게 되는데 Y는 D거리 안에서 최대 값이다.
이 값을 getCnt에 넣어서 K로 나누고 + 1을 하면 Y값내에 모든 Y좌표 개수를 구할 수 있다.
3. 유의할 점
피타고라스 정리는 전혀 생각하지 못해서 수학적인 측면에서도 문제를 풀 때 고려해야 할 거 같다.