[프로그래머스] 두 원 사이의 정수 쌍 - 181187(Java)

개발하는 파랑이·2024년 3월 19일

<문제>

<입력>

  • 정수(r1, r2) - 반지름
  • 1 ≤ r1 < r2 ≤ 1,000,000

<출력>

r1r2result
2320

<풀이>

  • 파다고라스 원의 정리 : x2+y2=r2x^2+y^2=r^2
  • 이용 : r12<=x2+y2<=r22r1^2 <= x^2+y^2 <= r2^2
    • r12x2<=y2<=r22x2r1^2-x^2<= y^2 <= r2^2-x^2
  • 아래 주석 읽어보면 이해할 수 있다.

<전체코드>

class Solution {
    public long solution(int r1, int r2) {
        long answer = 0;
        for(int i=1; i<=r2; i++) {
            int start = (int) Math.ceil(Math.sqrt((long)r1*r1 - (long)i*i)); //올림(내접 변 길이)
            int end = (int) Math.floor(Math.sqrt((long)r2*r2 - (long)i*i)); //내림(외접 변 길이)
            answer += end-start+1; //start~end 정수 쌍 개수
        }
        return answer*4;
    }
}
profile
이것저것 개발자

0개의 댓글