본문 바로가기

프로그래머스

[프로그래머스] 두 원 사이의 정수 쌍 [자바]

 

 


https://taehoung0102.tistory.com/299

 

[프로그래머스,java] 두 원 사이의 정수 쌍

그냥 원 사이의 정수 쌍 구하는 문제가 2레벨에 있었던거같은데, 두 원 사이의 정수쌍을 구하는 문제가 나왔다.. (이게 같은 2레벨?) 코딩테스트가 점점 난이도가 높아져가 수능이되어간다..; 문

taehoung0102.tistory.com

 

※. x^2 + y^2 <= r^2

(x, y 가 0이 아닐때도 정수쌍이 테두리에 포함되는 경우가 있다.)

 

※. 반지름은 최대 1,000,000 까지 올 수 있다. (long)

 

※. y값이 정수일때(x,y가 0이 아니고 정수쌍이 테두리에 포함됨) 테두리 포함

 

※. answer += y2 - y1(r2의 테두리 포함 - r1의 테두리 미포함) * 4(2,3,4 사분면)

 


class Solution {
    public long solution(int r1, int r2) {
        long answer = 0;
        long ro1 = (long)Math.pow(r1,2);
        long ro2 = (long)Math.pow(r2,2);
        long ans = 0;
        for(long x = 0; x <= r2; x++) {
            long y2 = (long)Math.sqrt(ro2 - x*x);
            long y1 = (long)Math.sqrt(ro1 - x*x);
            if(Math.sqrt(ro1-x*x) % 1 == 0) ans++;
            
            answer += (y2-y1) * 4;
        }
        answer += ans*4;
        answer -= 4; //x == r2 y == 0 일때 x == 0, y == r2 겹치는값 제거
        return answer;
    }
}