첫 번째 시도(실패)
- 규칙 찾기
반지름 1 - 5(4+1)
반지름 2 - 13(4+9)
반지름 3 - 29(4+25)
반지름 4 - 53(4+49)
- 규칙 보여서 코드 짰음
- 예외가 있었음(규칙이 아니였던 거임) 테두리가 꼭 4점만 정수여야 하는 건 아님
두 번째 시도 (성공 and 타임아웃)
x,y 각각 +1 하면서 x^2 + y^2 <= r^2 인지 탐색
통과는 하지만 타임아웃 O(n2)
세 번째 시도(최적화)
- 테투리 계산을 위해서 큰원은 ceil(올림)고 작은원은 floor(내림)한다.
class Solution {
public long solution(int r1, int r2) {
long answer = 0;
for (int i=1; i<=r2; i++) {
long minJ = (int) Math.ceil(Math.sqrt(1.0*r1*r1 - 1.0*i*i));
long maxJ = (int) Math.floor(Math.sqrt(1.0*r2*r2 - 1.0*i*i));
answer += (maxJ - minJ + 1);
}
return answer * 4;
}
}
'알고리즘' 카테고리의 다른 글
[백준] 7785번 회사에 있는 사람 (0) | 2024.03.25 |
---|---|
[프로그래머스] 과제 진행 / 우선순위 (0) | 2024.03.14 |
[프로그래머스] 소수찾기(완전탐색, 소수 찾기) (0) | 2024.02.23 |
[프로그래머스] 완전탐색, 규칙찾기 (0) | 2024.02.23 |
완전탐색(브루트 포스), 백트래킹 (0) | 2024.02.23 |