문제 요점은 각각의 원 안에 시작점과 끝점이 있는지 여부
한 점과 원의 중심점의 길이와 반지름의 길이를 비교해서
원 안에 있는지 원에 걸쳐 있는지 밖에 있는지 알 수 있다
어린 왕자 문제는 원과 겹치는 부분이 없으니 시작점과 끝점의
상태가 다른 상태(안쪽/바깥쪽)인지 확인해서 숫자 늘려준다....
in 인지 확인
bool in(int x, int y, int cx, int cy, int r) {
if ( (x - cx)*(x - cx) + (y - cy)*(y - cy) > r*r )
return false;
else
return true;
}
다른 상태인지 확인
while (N--) {
scanf("%d %d %d", &cx, &cy, &r);
if (in(X1, Y1, cx, cy, r) != in(X2, Y2, cx, cy, r))
count++;
}
printf("%d\n", count);
* 유사 문제
https://www.acmicpc.net/problem/1002 터렛
댓글 없음:
댓글 쓰기