Hello

: )

2016년 4월 21일 목요일

(회고) acmicpc 문제 1004 번: 어린 왕자, 원 안에 점이 있는지

https://www.acmicpc.net/problem/1004 어린 왕자

문제 요점은 각각의 원 안에 시작점과 끝점이 있는지 여부

한 점과 원의 중심점의 길이와 반지름의 길이를 비교해서
원 안에 있는지 원에 걸쳐 있는지 밖에 있는지 알 수 있다

어린 왕자 문제는 원과 겹치는 부분이 없으니 시작점과 끝점의
상태가 다른 상태(안쪽/바깥쪽)인지 확인해서 숫자 늘려준다....

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 터렛

댓글 없음:

댓글 쓰기