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;
}
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 상담원 인원 [자바] (0) | 2023.08.08 |
---|---|
[프로그래머스] 숫자 카드 나누기 [자바] (2) | 2023.06.16 |
[프로그래머스 Level 4] 올바른 괄호의 갯수 [자바] (0) | 2022.11.15 |
[프로그래머스 Level 2] 게임 맵 최단거리 [자바] (0) | 2022.11.15 |
[프로그래머스 Level 2] 가장 큰 수 [자바] (0) | 2022.11.13 |