헝D의 일기장
article thumbnail

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

 

프로그래머스

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

programmers.co.kr

 

  • 두 원 사이의 정수 쌍
문제 설명

x축과 y축으로 이루어진 2차원 직교 좌표계에 중심이 원점인 서로 다른 크기의 원이 두 개 주어집니다. 반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return하도록 solution 함수를 완성해주세요.
※ 각 원 위의 점도 포함하여 셉니다.


제한 사항
  • 1 ≤ r1 < r2 ≤ 1,000,000

입출력 예r1r2result
2 3 20

입출력 예 설명


그림과 같이 정수 쌍으로 이루어진 점은 총 20개 입니다.

 

나의풀이

class Solution {
    public long solution(int r1, int r2) {
        long answer = 0;
        //x^2+y^2 = r^2
        //y=sqrt(r^2 - x^2)
        //r2는 현재위치보다 작은값(=내림)
        //r1은 현재위치보다 큰값(=올림)
        for( int i = 1; i <= r2 ; i++){
            double y2 = Math.sqrt(Math.pow(r2,2) - Math.pow(i,2));
            double y1 = Math.sqrt(Math.pow(r1,2) - Math.pow(i,2));
            answer += ( (long)Math.floor(y2) - (long)Math.ceil(y1) + 1);
        }
        answer *= 4;
        return answer;
    }
}
profile

헝D의 일기장

@헝D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!