링크 : 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 처럼 풀면 될 것 같기도 한데, 일단 보류.
'온라인저지' 카테고리의 다른 글
[BOJ]2193번: 이친수 (0) | 2018.02.01 |
---|---|
[BOJ]2669번: 직사각형 네개의 합집합의 면적 구하기 (0) | 2018.01.25 |
[BOJ]2667번: 단지번호붙이기 (0) | 2018.01.25 |
[BOJ] 1260번: DFS와 BFS (0) | 2017.11.04 |
[BOJ] 10942번: 팰린드롬? (0) | 2017.10.21 |
[BOJ]14726번: 신용카드 판별 (0) | 2017.09.24 |
댓글