[c++/백준] 1004번: 어린 왕자

조히·2023년 4월 27일
0

PS

목록 보기
69/82

문제 링크

1004번: 어린 왕자

풀이

기하 문제

  1. 입력 받은 각 원마다 check 함수 호출
  2. 출발 지점과 도착 지점이 원 내부에 같이 있으면 경계를 안넘어도 되므로 return 0
    2-1. 둘 중 하나만 원 내부에 있으면 경계를 넘어야 하므로 return 1
    2-2. 둘 다 밖에 있을 경우도 return 0
  3. answer에 반환값을 저장해 출력한다.

코드

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

int x, y, x2, y2;

bool check(int cx, int cy, int r)
{
	if (pow(cx - x, 2) + pow(cy - y, 2) <= r * r && pow(cx - x2, 2) + pow(cy - y2, 2) <= r * r) return 0;
	else if (pow(cx - x, 2) + pow(cy - y, 2) <= r * r) return 1;
	else if (pow(cx - x2, 2) + pow(cy - y2, 2) <= r * r) return 1;
	return 0;
}

int main(void)
{
	int t;
	cin >> t;

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

		int n;
		cin >> n;

		int answer = 0;
		for (int i = 0; i < n; i++)
		{
			int cx, cy, r;
			cin >> cx >> cy >> r;
			answer += check(cx, cy, r);
		}

		cout << answer << endl;
	}

	return 0;
}
profile
Juhee Kim | Game Client Developer

0개의 댓글