🔗 문제
https://www.acmicpc.net/problem/1004
문제 번호가 1004 👼 라서 올리는 풀이 .. 🌹
✏️ 풀이
어린 왕자가 행성을 이탈하는지 아는 방법이 무엇이 있을까?
우리가 알고 있는 것은 각 행성의 중심 좌표와 반지름이라는 것을 생각해보자.
어린 왕자의 출발/도착 좌표와 원의 중심좌표의 거리를 이용하면 된다.
- 두 점 사이의 거리 공식 : sqrt((x-x1)^2 + (y-x2)^2)
그림에 나와 있는 원리를 이용해서 문제를 풀면 된다.
💾 소스
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
typedef pair<int, int> pii;
int calcDistance(const pii& a, const pii& b)
{
int x = a.first - b.first;
int y = a.second - b.second;
return x * x + y * y;
}
int main() {
int T; cin >> T;
int N, r, answer = 0;
pii from, to, planet;
while (T--)
{
answer = 0;
cin >> from.first >> from.second >> to.first >> to.second;
cin >> N;
for (int i = 0; i < N; ++i)
{
cin >> planet.first >> planet.second >> r;
if(calcDistance(from, planet) <= r*r != calcDistance(to, planet) <= r*r)
++answer;
}
std::cout << answer << "\\n";
}
return 0;
}