어린 왕자
문제: 어린 왕자 (백준 1004번)
풀이 방법
이는 이전의 터렛 문제와 매우 흡사하다. 다만 터렛 문제에서는 두 원 사이의 모든 관계를 다뤘다면 해당 문제에서는 원과 점 사이의 관계를 다루는 문제이다.
점이 원 안에 있는 경우 행성계 진입/이탈이 일어나게 되므로 아래의 경우 진입/이탈이 있다.
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";
}
}
정리
해당 문제 역시 좌표평면에서의 원 방정식을 구현하는 문제였다.
댓글남기기