[프로그래머스] 점 찍기(Java)

howisitgoing·2023년 4월 3일
0

프로그래머스

목록 보기
2/10

[프로그래머스] 점 찍기(Java)

점 찍기

해결 방법

처음에는 너무 쉽게 이중 loop 를 사용했다가
시간초과로 호되게 당했다.^^

이 문제를 풀기 위해서는 loop 1개를 이용해야 합니다.
loop 1개만 사용하기 위해서는 수학적 개념을 알아야 합니다.




풀이

class Solution {
    public long solution(int k, int d) {
        long answer = 0;

        for(long x = 0; x <= d; x += k) {
            // 최대로 가질수 있는 y 값
            // x^2 + y^2 = d^2 -> y^2 = d^2 - x^2
            long maxY = (long) Math.sqrt(Math.pow(d, 2) - Math.pow(x, 2));
            // y에서 k배 단위로만 점을 찍을 수 있기 때문에 k로 나눈다.
            // 1을 더하는 이유는 x가 0인 (0, y)를 고려한다.
            answer += (maxY / k) + 1;
        }

        return answer;
    }
}
profile
힘들면 힘을내자!!

0개의 댓글