728x90
반응형

블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다.


문제 설명

  • 조규현의 좌표(X1, Y1)와 백승환의 좌표(X2, Y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오.
    단, 위치의 개수가 무한대일 경우에는 -1을 출력한다.
  • 첫째줄에 테스트 케이스의 개수 T가 주어지며, 각 테스트 케이스의 한 줄에 x1, y1, r1, x2, y2, r2가 주어진다.
    (단, -10,000 <= (x1, y1, x2, y2) <= 10,000, r1, r2 <= 10,000)

풀이 전략

  • 어떤 지점에서 길이가 같은 점들의 집합이 원이므로, 원 두 개를 그린 뒤 그 두 개의 원의 교점의 개수를 리턴
  • 원이 완전히 동일하면 위치의 개수가 무한대 ( d=0, r1=r2)
  • 교점이 생길 수 있는 경우의 수는 다음과 같음

소스 코드

#include <iostream>
#include <cmath>

// 터렛
using namespace std;
int main()
{
	int t;
	cin >> t;

	for (int i = 0; i < t; ++i)
	{
		int x, y, r, x2, y2, r2;
		cin >> x >> y >> r >> x2 >> y2 >> r2;

		double d = sqrt(((x - x2) * (x - x2)) + ((y - y2) *(y - y2)));
		double sub = r > r2 ? r - r2 : r2 - r;

		if ( d == 0 && r == r2 )
			cout << "-1" << '\n';
		else if (r + r2 == d || sub == d)
			cout << "1" << '\n';
		else if (sub < d && d < (r + r2))
			cout << "2" << '\n';
		else
			cout << "0" << '\n';
	}
}

링크

https://www.acmicpc.net/problem/1002

 

1002번: 터렛

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

www.acmicpc.net

 

728x90
반응형

'문제풀이 > BOJ' 카테고리의 다른 글

[C++ 백준] 1929 소수 구하기  (0) 2021.06.13
[C++ 백준] 1065 한수  (0) 2021.06.12
[C++ 백준] 1436 영화감독 숌  (0) 2021.05.31
[C++ 백준] 10250 ACM 호텔  (0) 2021.05.29
[C++ 백준] 2941 크로아티아 알파벳  (0) 2021.05.28