작심 24/7

[백준] 1002번 터렛 본문

백준

[백준] 1002번 터렛

모닝수박 2020. 5. 20. 02:54
 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

 

각각의 좌표를 기준으로 거리 r을 가질 수 있는 범위를 연결해보면 원이 나온다.

따라서 이 문제는 두 원의 위치 관계에 따른 교점의 개수를 구하는 문제이다.

 

 

교점의 개수를 기준으로 두 원을 그려보면 이러한 경우의 수들이 나온다

조건문의 순서를 주의해서 작성해주면 끝

#include <iostream>
#include <cmath>
using namespace std;

int main() {
	int T;
	cin >> T;
	for (int t = 0; t < T; t++) {
		int x1, y1, r1, x2, y2, r2;
		cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
		double distance = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));

		if (x1 == x2 && y1 == y2 && r1 == r2)cout << -1 << "\n";
		else if (x1 == x2 && y1 == y2 && r1 != r2) cout << 0 << "\n";
		else if (r1 + r2 == distance || abs(r1 - r2) == distance)cout << 1 << "\n";
		else if (r1 + r2 > distance && abs(r1 - r2) < distance)cout << 2 << "\n";
		else cout << 0 << "\n";
	}
	return 0;
}

'백준' 카테고리의 다른 글

[백준] 11729번 하노이 탑 이동 순서  (0) 2020.05.20
[백준] 2447번 별 찍기 - 10  (2) 2020.05.20
[백준] 1929번 소수 구하기  (2) 2020.05.20
[백준] 1193번 분수찾기  (0) 2020.05.20
[백준] 11720번 숫자의 합  (0) 2020.05.20
Comments