🔗 문제
👨🏻💻 풀이 및 코드
원에 포함된 정수 쌍의 갯수는 x^2 + y^2 = r^2 공식을 사용해 구할 수 있다.
ex) 예제에 나온 r = 3 일 때의 정수 쌍의 갯수
x 가 1일 때, y 는 2루트2다. → 2.xx 따라서 y의 정수의 갯수는 0, 1, 2 (3개)
x 가 2일 때, y 는 루트5다. → 2.xx 따라서 y의 정수의 갯수는 0, 1, 2 (3개)
x 가 3일 때, y 는 0 이다. 따라서 y의 정수의 갯수는 0 (1개)
이제 원에 포함된 정수 쌍의 갯수를 구하는 법을 알았으니, 두 원 사이에 포함된 정수 쌍의 갯수를 구하려면
바깥 원에 포함된 정수 쌍의 갯수 - 안쪽 원에 포함된 정수 쌍의 갯수를 하면 된다.
주의해야 할 점이 정수 쌍의 갯수를 셀 경우, 안쪽 원의 테두리에 있는 점도 포함시키는데 문제에선 이 점도 두 원 사이 내부에 있다고 판단하기 때문에 이 점을 빼버리면 안된다. 따라서 안쪽 원에 포함된 정수 쌍을 구할 때 1.xx 일 경우엔 2개가 되지만, 0일 경우엔 0이다. 이 부분을 ceil 로 해결했다.
전체 코드
class Solution {
public long solution(int r1, int r2) {
long answer = 0;
for(int i=1; i<=r2; i++) {
int maxJ = (int)Math.floor(Math.sqrt((long)r2*r2 - (long)i*i))+1;
int minJ = (int)Math.ceil(Math.sqrt((long)r1*r1 - (long)i*i));
answer += maxJ - minJ;
}
return answer * 4;
}
}
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 파괴되지 않은 건물 - JAVA (0) | 2023.09.18 |
---|---|
[프로그래머스] 풍선 터트리기 - JAVA (0) | 2023.08.04 |
[프로그래머스] 당구 연습 - JAVA (0) | 2023.06.28 |
[프로그래머스] 방의 개수 - JAVA (0) | 2023.06.08 |
[프로그래머스] Level 2. 요격연습 - JAVA (0) | 2023.04.27 |