프로그래머스 LEVEL 2(두 원 사이의 정수 쌍)

image

  • 사용 언어 : 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