위 그림처럼은 예제 2번
을 나타낸 것이다.
위 그림처럼 5,0 => 4,1 => 4,2 => 4,3 => 4,4 => 0,5
순으로 갈 수 있게,
while문
을 사용하면 된다.
다만 left 시작위치
가 d 가 아닌 d - (d % k)
값이 되어야
right가 최대
가 될 수 있다.
function solution(k, d) {
let answer = 0;
const c = d ** 2;
let left = d - (d % k); // k의 배수로 left 시작 값을 초기화
let right = 0;
while (right <= d) {
// left 제곱과 right 제곱을 더한 값이 d의 제곱(c)보다 낮다면
if (left ** 2 + right ** 2 <= c) {
// right를 k 만큼 증가
answer += Math.floor(left / k) + 1;
right += k;
} else {
// left를 k 만큼 감소
left -= k;
}
}
return answer;
}