[JS][프로그래머스 -LEVEL 2 - 두 원 사이의 정수 쌍 ]

정대만·2023년 8월 2일

코딩테스트

목록 보기
38/51
post-thumbnail

풀이

  • 이전에 쉬운단계로 나왔던 적이 잇는 문제여서 그렇게 하면 되겠구나~ 생각하고 풀었던 문제이다.
  • 이전과 같이 0 1 2 3 으로 갔을때 몇개나 있나? 그것을 카운트 하는 문제이다.
  • 이중for 문 쓰면 아마도 .. 시간 복잡도 생길것이다. 따라서 피타고라스 정리로 풀면 안된다.

그림판 고장나서 걍 글로만 씀 <-

[y,x] = [0.1] 을 보면 점이 하나있는 것을 볼수 있는데
r=3 인 원은 루트 8 r=2인 원은 루트 3 인것을 볼수 있다.
여기서 우리가 구하는것은 정수 이기 때문에 큰수는 math.ceil 으로 소수점 내려주기 하고
작은것은 소수점 math.floor 으로 올리면 되겠다 생각이 들었다.

코드

function solution(r1, r2) {
   var count=0;

  for(var i=0; i<=r2; i++){

      var fir=  Math.ceil(  Math.sqrt((r1*r1)-(i*i)) );
      var sec=  Math.floor(  Math.sqrt((r2*r2)-(i*i)) );
     
      if(i<=r1){
          
            count+= (sec-fir)+1;
      }
      else{
          
           count+= ((sec)+1);
      }
    
  }
  count*=4;
    //console.log(count)
   return count- ((r2-r1+1)*4)
}
solution(2,3)
profile
안녕하세요

0개의 댓글