어린왕자 문제는 원의 중심과 반지름을 가지고, 어떤 점을 포함하고 있는지 아닌지를 판별하는 문제입니다.
처음에 이 문제를 보았을 때에는 그림만 보면, 어린왕자의 우주선이 어떤 부피를 가지고 행성사이를 빠져나가는 모습을 상상했었는데, 전혀 그런것과 무관한 문제였습니다. 그림만 보고 어렵지 않을까 생각하고 나중에서야 푼 문제네요.
백준 문제의 링크는 다음과 같습니다.
https://www.acmicpc.net/problem/1004
처음에 썼듯이 이 문제는 좌표에 점이 주어졌으면, 그 점이 주어진 원들 안에 포함되는지 아닌지만 판단하면 되는 문제로 간단하게 풀면 됩니다.
모든 원에 대해서 어린왕자의 우주선 시작점이 포함되어 있거나 아니면 도착점이 포함되어 있거나 판단한 값을 각각 a, b 라고 한다면, a, b 의 상태가 서로 다를 때에만 카운팅해서 답을 적어내면 됩니다.
이에 대한 풀이는 다음과 같습니다. 소스는 참고용으로만 보세요.
//----------------------------------------------------------------------------------------
// baekjoon #1004
// - by Aubrey Choi
// - created at 2019-09-14
//----------------------------------------------------------------------------------------
#include <stdio.h>
int main()
{
int t, x1, y1, x2, y2, n;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&n);
int ans=0, x, y, r;
while(n--)
{
int t=0;
scanf("%d%d%d",&x,&y,&r);
if((x1-x)*(x1-x)+(y1-y)*(y1-y)<r*r) t++;
if((x2-x)*(x2-x)+(y2-y)*(y2-y)<r*r) t++;
ans += t==1;
}
printf("%d\n", ans);
}
}
반응형
'Programming > BOJ' 카테고리의 다른 글
백준 #1009 분산처리 (0) | 2019.12.20 |
---|---|
#1007 벡터 매칭(Mathematics) (0) | 2019.12.20 |
[C/C++] 백준 #1005 ACM Craft(위상 정렬) (0) | 2019.12.19 |
백준 #1003 피보나치 함수 (0) | 2019.12.16 |
[C/C++] 백준 #1002 터렛(수학) (0) | 2019.12.16 |
댓글