알고리즘

프로그래머스 - 점찍기

hwigaeng 2025. 1. 10. 18:01

문제  

좌표 평면에 조건에 맞는 점이 몇개가 찍히는지 리턴하는 문제이다.

조건 

  • 원점(0,0) 으로부터 x축 방향으로a * k(a= 0, 1, 2, 3, ...) , y축 방향으로 b*k(b = 0,1,2,3,...) 만큼 떨어진 위치에 점을 찍는다.
  • 원점과의 거리가 d를 넘는 위치에는 점을 찍지 않는다.
  • 1 <= k <= 1,000,000
  • 1 <= d <= 1,000,000

내 풀이

원은 한 점에서 같은 거리만큼 떨어진 점들의 집합이다.

이를 이용해서 x좌표에서 거리가 d인 y 좌표의 값을 구하여 총 점의 개수를 구하였다.

function solution(k, d) {
    let answer = 0
    const getMaxY = (x , r) => {
       return Math.sqrt(r**2 - x**2)
    }
    
    for(let i = 0 ; i <= d ; i+=k){
        const maxY = getMaxY(i , d)
        answer += parseInt(maxY / k) + 1
    }
    return answer;
}

출처 : 프로그래머스 

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/140107

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr