본문 바로가기
코테연습

196. 점 찍기 Javascript

by hxunz 2023. 3. 29.

https://school.programmers.co.kr/learn/courses/30/lessons/140107

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

/**
* ## 이해
*
* 미지의 것: 점이 총 몇 개 찍히는지 구하라
* 자료
*   - 원점(0, 0)으로부터 x축 방향으로 a*k(a = 0, 1, 2, 3 ...),
      y축 방향으로 b*k(b = 0, 1, 2, 3 ...)만큼 떨어진 위치에 점을 찍습니다.
    - 원점과 거리가 d를 넘는 위치에는 점을 찍지 않습니다.
* ## 계획
*   - x값 마다 찍을 수 있는 최대 y 값을 구한다.
    - 점을 찍을 수 있는 좌표를 구한다.
    - 위에서 구한 최대 y값이 k로 나누어 떨어진다면 1을 더해준다. 그렇지 않으면 0을 더한다.
*
* ## 실행
*
* ## 반성
*
*/

const solution = (k, d) => {
  let sum = 0;
  for (let x = 0; x <= d; x += k) {
    const y = (d ** 2 - x ** 2) ** 0.5;
    sum += Math.ceil(y / k) + (y % k === 0 ? 1 : 0);
  }
  return sum;
}

test('solution', () => {
  expect(solution(2, 4)).toEqual(6)
});

댓글