알고리즘

백준 JS | 1004번: 어린왕자

3jun 2023. 1. 25. 16:43
출처 : 백준 온라인저지 - 1004번: 어린왕자

로직을 구하기 전에 먼저 점과 점 사이의 거리 공식을 알아야 한다. 

좌표평면 위의 두 점 A(x, y), B(x1, y1) 가 존재한다고 할 때, 이 두 점 사이의 거리 d 는 아래와 같은 공식을 사용하여 구할 수 있다.

 

  1. 입력값에서 가장 첫 번째로 오는 테스트 케이스의 갯수 T 값을 구한다.
  2. 나머지 input값 데이터에서 가장 처음 오는 데이터는 좌표 값이므로 coordinate 값에 할당하고
  3. 각 테스트케이스에 주어지는 행성의 갯수를 n 값에 할당한다.
  4. 주어진 행성의 갯수만큼 테스트를 진행하기 위해 배열을 0부터 n까지 잘라내고
    1. 원의 중점과 출발점, 도착점의 각 거리를 구하고 그 결과값을 비교한다.
    2. 중점과 각 점의 거리가 원의 반지름보다 크거나 같다면 true, 다르면 false가 출력된다.
    3. 둘 다 값이 true 라면 출발점과 도착점 모두 원의 바깥에 위치하고, false 라면 원의 내부에 위치하므로 원을 지나지 않아도 된다.
    4. 두 값이 달라야만 출발점과 도착점을 지나는 선이 원을 지나므로 count++
  5. 테스트가 끝나면 count 값을 출력하고 다음 테스트 케이스가 존재한다면 T 값이 아직 양수이므로 T 값이 0이 될 때까지 위 로직이 반복 된다.