#
문제 설명
좌표평면을 좋아하는 진수는
x축과 y축이 직교하는 2차원 좌표평면에
점을 찍으면서 놀기
조건
a*k
(a = 0, 1, 2, 3 ...)b*k
(b = 0, 1, 2, 3 ...)만큼매개 변수
k
d
반환값
k | d | d |
---|---|---|
2 | 4 | 6 |
1 | 5 | 6 |
// 복잡하게 생각해서 필요한 point 의 값들을
// 반복문으로 arr 에 추가한 다음 set 으로 중복갑 없애기
function solution(k, d) {
let answer = [[0,0]];
const points = [];
for (let i = 1; i*k <= d; i++) {
points.push(i*k);
answer.push([0, i*k]);
answer.push([i*k, 0]);
}
for (let p1 of points) {
for (let p2 of points) {
const len = Math.sqrt(p1*p1 + p2*p2);
if (len <= d){
answer.push([p1,p2])
answer.push([p2,p1])
} else {
break;
}
}
}
const unique = Array.from(new Set(answer.map(a => JSON.stringify(a))), json => JSON.parse(json));
return unique.length;
}
function solution(k, d) {
let answer = 0;
for(let x=0; x<=d; x+=k){
// 해당 x 좌표에서 최대 y 거리 (원의 방정식)
const maxY = ~~(Math.sqrt(d*d - x*x));
// k의 배수, 0 포함
answer += ~~(maxY / k)+1;
}
return answer;
}
풀이
원의 방정식을 통해 solution 구하기
- 원의 방정식을 통해 해당 x 좌표마다 최대 y 좌표 구하기
- 해당 y 좌표는 k 배수와 0 을 포함한 좌표의 개수