최대 1 분 소요

문제: 어린 왕자 (백준 1004번)

image
image

풀이 방법

이는 이전의 터렛 문제와 매우 흡사하다. 다만 터렛 문제에서는 두 원 사이의 모든 관계를 다뤘다면 해당 문제에서는 원과 점 사이의 관계를 다루는 문제이다.

점이 원 안에 있는 경우 행성계 진입/이탈이 일어나게 되므로 아래의 경우 진입/이탈이 있다.

1. 시작점: 원 안 / 도착점: 원 밖  
2. 시작점: 원 밖 / 도착점: 원 안  

코드

#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;

int T, N;
int X, Y, R;
int X1, X2, Y1, Y2;

int main() {
    cin >> T;
    for (int i=0; i<T; i++) {
        int cnt = 0;
        cin >> X1 >> Y1 >> X2 >> Y2;
        cin >> N;
        for (int j=0; j<N; j++) {
            cin >> X >> Y >> R;
            if ((pow((X-X1),2) + pow((Y-Y1),2)) < pow(R,2)) {
                if ((pow((X-X2),2) + pow((Y-Y2),2)) > pow(R,2)) {
                    cnt++;
                }
            }
            if ((pow((X-X1),2) + pow((Y-Y1),2)) > pow(R,2)) {
                if ((pow((X-X2),2) + pow((Y-Y2),2)) < pow(R,2)) {
                    cnt++;
                }
            }
        }
        cout << cnt << "\n";
    }
}  

정리

해당 문제 역시 좌표평면에서의 원 방정식을 구현하는 문제였다.

댓글남기기