가장 가까운 두 점 찾기 문제는 2차원 평면 위에 점 N개가 있을 때, 거리가 가장 가까운 두 점을 찾는 문제입니다. (2261번 문제: 가장 가까운 두 점)
N이 작은 경우에는 모든 경우를 다해보는 방식을 이용해서 구현할 수 있습니다.
#include <cstdio>
int x[100000];
int y[100000];
int dist(int x1, int y1, int x2, int y2) {
return (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);
}
int main() {
int n;
scanf("%d",&n);
for (int i=0; i<n; i++) {
scanf("%d %d",&x[i],&y[i]);
}
int ans = -1;
for (int i=0; i<n-1; i++) {
for (int j=i+1; j<n; j++) {
int d = dist(x[i],y[i],x[j],y[j]);
if (ans == -1 || ans > d) {
ans = d;
}
}
}
printf("%d\n",ans);
return 0;
}