-
728x90
* 접근한 방식
- 두 원의 교점 수를 구하는 방법을 적용(우측 사진)
- 류재명 위치가 무한대 = 같은 원을 의미
└ d == 0 이고, r1 == r2
- 교점 1개(내접 또는 외접)
└ d == r1 - r2(r1 > r2) 또는 d == r1 + r2
- 교점 2개
└ r1 - r2 < d < r1 + r2(r1>r2)
- 위 3개에 해당하지 않는 경우, 교점 0개#include <iostream> #include <math.h> using namespace std; int main() { int x1, y1, r1, x2, y2, r2; double d; int T = 0; cin >> T; for (int i = 0; i < T; i++) { cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2; d = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2)); if (d == 0 && r1 == r2) // 같은 원 cout << -1 << "\n"; else if (d == abs(r1 - r2) || d == r1 + r2) // 내접, 외접 cout << 1 << "\n"; else if (abs(r1 - r2) < d && d < r1 + r2) // 교점 2개인 원 cout << 2 << "\n"; else cout << 0 << "\n"; } }
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[11729] 하노이 탑 이동 순서(C++) (0) 2020.04.27 [2447] 백준 : 별 찍기 - 10(C++) (0) 2020.04.26 [3053] 택시 기하학(C++) (0) 2020.04.26 [4153] 백준 : 직각삼각형(C++) (0) 2020.04.26 [3009] 백준 : 네 번째 점(C++) (0) 2020.04.26 댓글