The Way
백준 1002번: 터렛 본문
백준 온라인 저지(BOJ) 1002번 문제
https://www.acmicpc.net/problem/1002
1. 문제 요약
두 사람의 좌표 (x1, y1), (x2, y2)와 해당 점으로부터의 거리 r1, r2가 주어질 때
가능한 좌표의 수 출력
2. 알고리즘
두 원의 위치관계를 이용하는 문제이다
(참고: http://mathbang.net/101)
거리를 비교할 때, 실제 거리를 구하려면 제곱근을 씌워야 하지만
여기서는 단순 크기비교이므로 제곱을 한 값을 비교하는 것이 여러모로 깔끔하다.
sqrt를 사용하면 include를 하나 더 해야되는 것은 그렇다 쳐도 double이 튀어나오는데 이는 항상 오차를 야기하기 때문이다.
3. 코드
#include <iostream> using namespace std; int main() { int n; scanf("%d", &n); for (int i = 0; i < n; ++i) { int x1, y1, r1, x2, y2, r2; scanf("%d %d %d %d %d %d", &x1, &y1, &r1, &x2, &y2, &r2); int d = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1); int sum = (r1 + r2) * (r1 + r2); int dif = (r1 - r2) * (r1 - r2); if (d == 0) { if (dif == 0) printf("-1\n"); else printf("0\n"); } else if (d == sum || d == dif) printf("1\n"); else if (dif < d && d < sum) printf("2\n"); else printf("0\n"); } }
'PS > 백준 온라인 저지' 카테고리의 다른 글
백준 10172번: 개 (0) | 2017.08.22 |
---|---|
백준 1008번: A/B (0) | 2017.08.22 |
백준 1004번: 어린 왕자 (0) | 2017.08.22 |
백준 1003번: 피보나치 함수 (2) | 2017.08.22 |
백준 3052번: 나머지 (0) | 2017.08.22 |
Comments