알고리즘/백준

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

이우열 2022. 6. 11. 20:31
728x90

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

 

1004번: 어린 왕자

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주

www.acmicpc.net


 


문제 분석

어린 왕자를 감싸고 있는 원과 장미를 감싸고 있는 원의 개수의 합을 구하는 문제이다.

 

코드 진행 방향

행성계를 입력받으면 어린 왕자가 행성계에 속해 있을 경우 장미는 행성계에 속해 있지 않아야 하고

어린 왕자가 행성계에 속해 있지 않을 경우 장미는 행성계에 속해 있어야 한다.

이 가정을 만족하는 행성계의 수를 누적하여 합을 구한다.

 


 

코드

더보기
#include <stdio.h>
#include <math.h>
int main(){
	int t;
	scanf("%d", &t);
	
	while(t--){
		int x1, y1, x2, y2, cnt=0;
		scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
		int arr[51][4];
		int n;
		scanf("%d", &n);

		for(int i=0; i<n; i++){
			scanf("%d %d %d", &arr[i][0], &arr[i][1], &arr[i][2]);
		}
		
		for(int i=0; i<n; i++){
			if(sqrt(pow(x1-arr[i][0], 2)+pow(y1-arr[i][1], 2))<arr[i][2]){
				if(sqrt(pow(x2-arr[i][0], 2)+pow(y2-arr[i][1], 2))>arr[i][2]){
					cnt++;
				}
			}
			if(sqrt(pow(x1-arr[i][0], 2)+pow(y1-arr[i][1], 2))>arr[i][2]){
				if(sqrt(pow(x2-arr[i][0], 2)+pow(y2-arr[i][1], 2))<arr[i][2]){
					cnt++;
				}
			}
		}

		printf("%d\n", cnt);
	}
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

[백준/C] 1009번: 분산처리  (0) 2022.06.12
[백준/C] 1008번: A/B  (0) 2022.06.12
[백준/C] 1003번: 피보나치 함수  (0) 2022.06.11
[백준/C] 1002번: 터렛  (0) 2022.06.11
[백준/C] 1001번: A-B  (0) 2022.06.11