프로그래머스 LEVEL 2(두 원 사이의 정수 쌍)
-
사용 언어 : javascript
-
해결 날짜 : 2023-05-01
-
해결 방법 :
- 무조건 x가 r1, r2, y가 r1, r2인 점이 존재하므로 최소 8
- 1부터 r2 - 1까지 사이에 존재하는 정수인 점을 구하되,
- 사분면 중 하나만 계산 후 * 4
- x좌표가 i일 때
- r1을 반지름으로 갖는 원의 y좌표를 a,
- r2를 반지름으로 갖는 원의 y좌표를 b라고 하면
- i < r1인 경우,
- 두 a, b 사이의 정수의 갯수 * 4
- i === r1인 경우,
- (두 a, b 사이의 정수의 갯수 - 1) * 4
- r1 < i < r2인 경우,
- 0, b사이의 정수의 갯수 * 4
-
회고 :
- x
-
코드
function solution(r1, r2) { let answer = 8; for (let i = 1; i < r2; i++) { let a = r1 >= i ? Math.sqrt(r1 * r1 - i * i) : -1; let b = Math.sqrt(r2 * r2 - i * i); if (Number.isInteger(a)) { if (a !== -1 && r1 !== i) { answer += 4; } a += 1; } else { a = Math.ceil(a); } b = Number.isInteger(b) ? b + 1 : Math.ceil(b); answer += 4 * (b - a); } return answer; }
-
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges