[구현] 프로그래머스 점찍기(실패분석-아이디어)

byeol·2023년 5월 11일
0

접근

점찍기
두 원 사이의 정수쌍

이 문제는 위 회색 부분에 채워지는 점들의 개수를 구하는 문제였습니다
단 그 점이 k로 나눠지는 점이어야 합니다.

따라서 위와 같이 x를 0부터 시작하여 1씩 늘려가며 저 주황색 선에 생기는 좌표의 점들이 몇 개 발생하는지를 누적했습니다.

하지만 문제에 주어지는 매개변수 k는 k 배수의 점들만 포함되도록 하기 때문에
그 부분을 검사하는 조건문을 추가했습니다.

풀이

class Solution {
    public long solution(int k, int d) {
        long answer = 0;
        //x축과 y축이 직교하는 2차원 좌표평면에 점을 찍으면서 놀고 있다.
        // 두양의 정수 k,d
        // 원점으로 부터 x축 방향 a*k 점
        //             y축 방향 b*k 점
        // 원점과 거리가 d를 넘는 위치는 점 X    
        // => 결국 원의 방정식을 이용한 방법
        //x를 d보다 작은 k의 배수만큼 늘려가며 존재하는 점의 개수를 더해주기
        
        

        
        int x=0;
        while(x<=d){
            int dot = (int)Math.sqrt(Math.pow(d,2)-Math.pow(x,2));
            //System.out.println(answer);
            answer=answer+(dot/k)+1;
            //System.out.println("x:"+x+",answer:"+answer+",dot:"+dot);
            x+=k;  
        }
        return answer;
    }
}
profile
꾸준하게 Ready, Set, Go!

0개의 댓글