온라인저지
[BOJ] 1002번 : 터렛
plzfday
2017. 11. 16. 14:38
링크 : https://www.acmicpc.net/problem/1002
터렛문제... 방금전에 올린 '두 원의 위치관계'를 올린 이유가 여기 있다.
굉장히! 유익한 문제~ 중학교 과정에서 약했던 부분을 다시 보강한 기분이다.
암튼 여기서 해설을 원한다면 전에 있는 글을 보길 바란다. 그 다음에 다시 오길 바란다.
아, 참고로 이 문제에서 고민해야하는 부분은 -1을 출력하는 부분인데, 그냥 x1 == x2 && y1 == y2 && r1 == r2 일 때 -1을 출력하면 된다. (잘 생각해 보면 될 것이다.)
그리고 나머지 부분은 내 전 글에 있으므로 그냥 여기에는 코드만 올리겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <cstdio> #include <cmath> int main() { double d; int T; int big, small; scanf("%d", &T); for (int i = 0; i < T; i++) { int x1, x2, y1, y2, r1, r2; scanf("%d %d %d %d %d %d", &x1, &y1, &r1, &x2, &y2, &r2); d = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); if (r1 > r2) big = r1, small = r2; else big = r2, small = r1; if (x1 == x2 && y1 == y2) { if (r1 == r2) printf("-1\n"); else printf("0\n"); continue; } if (big - small < d && d < big + small) printf("2\n"); else if (small + big == d || big - small == d) printf("1\n"); else if (small + big < d || d < big - small) printf("0\n"); } return 0; } | cs |
다른 분들 코드를 보니깐 나보다 더 짧던데 나는 도저히 모르겠다...
math.h을 안 쓰고 그냥 sqrt x = y -> x = y * y 처럼 풀면 될 것 같기도 한데, 일단 보류.