티스토리 뷰

int main() {
	long long n,i,j,k,x=0,y,c,d;
	double r,a[101],b[101];
	scanf("%lld %lf",&n,&r);
	r=r*r;
	for(i=1;i<=n;i++) scanf("%lf %lf",&a[i],&b[i]);
	for(i=-100;i<=100;i++)
	 for(j=-100;j<=100;j++) {
	 	y=n;
	 	for(k=1;k<=n;k++) if(r<(a[k]-i)*(a[k]-i)+(b[k]-j)*(b[k]-j)) y-=1;	
		if(x<y) {x=y;c=i;d=j;}
	 }
	printf("%lld %lld",c,d);
}

 

풀이 : 기하학, 브루트 포스

 

1. 입력을 받습니다.

2. 브루트 포스 : -100~100 x, y 쌍을 한개씩 전부 시도 할 것입니다. 이중 반복문으로 작성합니다.

3. 기하학 : 문제에서 주어신 방정식 (좌표평면에서 두 점 사이의 거리) 을 이용하여 R^2 보다 크면 원에 들어 있지 않는 것으로 판단합니다.

4. 기존보다 원에 들어있는 쌀알의 개수가 많다면 (초기값은 0) 이 때의 x,y 값을 변수에 따로 저장해 둡니다.

5. 반복이 끝나면 4에서 얻은 x, y 의 값을 출력합니다.

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함