이 문제는 위 회색 부분에 채워지는 점들의 개수를 구하는 문제였습니다
단 그 점이 k로 나눠지는 점이어야 합니다.
따라서 위와 같이 x를 0부터 시작하여 1씩 늘려가며 저 주황색 선에 생기는 좌표의 점들이 몇 개 발생하는지를 누적했습니다.
하지만 문제에 주어지는 매개변수 k는 k 배수의 점들만 포함되도록 하기 때문에
그 부분을 검사하는 조건문을 추가했습니다.
class Solution {
public long solution(int k, int d) {
long answer = 0;
//x축과 y축이 직교하는 2차원 좌표평면에 점을 찍으면서 놀고 있다.
// 두양의 정수 k,d
// 원점으로 부터 x축 방향 a*k 점
// y축 방향 b*k 점
// 원점과 거리가 d를 넘는 위치는 점 X
// => 결국 원의 방정식을 이용한 방법
//x를 d보다 작은 k의 배수만큼 늘려가며 존재하는 점의 개수를 더해주기
int x=0;
while(x<=d){
int dot = (int)Math.sqrt(Math.pow(d,2)-Math.pow(x,2));
//System.out.println(answer);
answer=answer+(dot/k)+1;
//System.out.println("x:"+x+",answer:"+answer+",dot:"+dot);
x+=k;
}
return answer;
}
}