programmers_두 원 사이의 정수 쌍_java

2023. 5. 21. 19:57Algorithm/Programmers

728x90

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

 

프로그래머스

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

programmers.co.kr

class Solution {
    public long solution(int r1, int r2) {
        long answer = 0;
        answer -= r2-r1+1; // 겹치는 경우 제거

        double r2Square = Math.pow(r2, 2); // r2 * r2 -> int*int = 오버플로우 발생
        double r1Square = Math.pow(r1, 2);

        // 원의 방정식 -> r1*r1 <= x*x + y*y <= r2 * r2
        for (int x = 0; x<=r2; x++){
            double xSquare = Math.pow(x, 2);
            double r2XSub = r2Square - xSquare;
            double r1XSub = r1Square - xSquare;
            
            double maxy = Math.floor(Math.sqrt(r2XSub));
            double miny = 0;
            
            if (r1Square -xSquare >= 0){ // x < r1일때
                miny = Math.ceil(Math.sqrt(r1XSub));
            }

            answer += maxy - miny + 1;
        }

        answer = answer*4;
        return answer;
    }
}

'Algorithm > Programmers' 카테고리의 다른 글

programmers_혼자서 하는 틱택토_java  (0) 2023.05.24
programmers_숫자 블록_java  (0) 2023.05.22
programmers_리코쳇 로봇_java  (0) 2023.05.21
programmers_우박수열 정적분_java  (1) 2023.05.21
programmers_N-Queen_java  (0) 2023.05.19