공부혜옹

백준 1004 어린 왕자 본문

공부합시다/Algorithm

백준 1004 어린 왕자

Blair06 2021. 9. 14. 15:54

어린왕자가 진입/이탈해야하는 경우는 출발점과 도착점 사이에 꼭 통과해야하는 원이 존재하는 경우 이다. 이때, 출발점과 도착점이 같은 원에 있다면? 그원안에 행성이 얼마나 많은지와 상관없이 ( 피해서 갈 수 있으니 ) 진입/이탈해야할 경우가 없다. 따라서 출발점과 도착점사이에 곡 통과해야하는 원이 있는지를 판별하기 위해 두 점과 원의 중심간의 거리를 비교한다. 거리가 원의 반지름보다 크다면 해당 점이 원의 외부에 위치하는 것으로 꼭 원을 통과해야한다.

 

#include <iostream>
#include <algorithm>
using namespace std;

int t, n;

int x1, x2, y1, y2;
int x, y, r;
int total;
int cnt;
int main(){
    
    
    cin >> t;
    
    for(int i = 0; i< t; i++) {
        total = 0;
        cin >> x1 >> y1 >> x2 >> y2 >> n;
 

        for(int j = 0; j< n; j++){
            cnt =0;
            cin >> x >> y >> r;
           
            if((x-x1)*(x-x1)+(y-y1)*(y-y1) < r*r){
                cnt++;
            }
            if((x-x2)*(x-x2)+(y-y2)*(y-y2) < r*r){
                cnt++;
            }
            if(cnt == 1){
                total++;
            }
                
        }
        cout << total << endl;
        
    }
    return 0;
}
반응형

'공부합시다 > Algorithm' 카테고리의 다른 글

백준 5904 moo 게임  (0) 2021.09.28
백준 1485 정사각형  (0) 2021.09.14
백준 15686 치킨배달  (0) 2021.08.31
백준 1339 단어수학  (0) 2021.08.31
백준 1915 가장 큰 정사각형  (0) 2021.08.17
Comments