My First Programming

프로그래머스 점 찍기 javascript

2022-12-072 분 소요
/images/thumbnail/프로그래머스.jpg

🖇️프로그래머스

풀이

위 그림처럼은 예제 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;
}
Remy Sharp

JSC

새로운 기술 익히는게 재밌는 사람 😊