Dev/알고리즘
알고리즘 - 10주 완성 알고리즘 코딩테스트 (코딩몬스터) : 데스티니
GeekCoder
2021. 10. 7. 00:04
이직하고 리액트, 엘라스틱서치, 노드js를 공부하고 개발하느라 블로그에도 소홀해지고 알고리즘 공부도 하지 못하였다. 대신 자바스크립트나 리액트에 대하여 많은 공부를 할 수 있었던 것 같다.
코딩몬스터 님이 구름에듀에서 진행하는 알고리즘 코딩테스트 강의가 개편되고 있어 다시 강의를 듣기 시작하였다.
문제를 유출할 수 없으니 앞으로 내가 풀었던 문제들의 정답만 올리도록 하겠다.
문제2F - 데스티니 |
import java.io.*;
import java.lang.*;
import java.util.*;
public class Main {
public static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args)
{
int n = scanner.nextInt();
Point2D[] points = new Point2D[n];
for(int i = 0 ; i < n ; i++)
{
int x= scanner.nextInt();
int y= scanner.nextInt();
points[i] = new Point2D(x, y);
}
double mind = 1000000000;
int cnt = 0;
for(int i = 0 ; i < n ; i++)
{
for(int j = i+1 ; j< n ; j++){
double sqd = points[i].getDistanceTo(points[j]);
if(sqd < mind)
{
mind = sqd;
cnt= 1;
}
else if(sqd == mind)
{
cnt++;
}
}
}
System.out.println(String.format("%.1f", mind));
System.out.println(cnt);
}
}
class Point2D{
int x;
int y;
public Point2D(int x, int y)
{
this.x = x;
this.y = y;
}
/**
* 2차원 평면 상에서 점 this부터 점 target까지 거리의 제곱을 계산하는 함수
* @param target
* @return
*/
public int getSquaredDistanceTo(Point2D target)
{
int dx = Math.abs(target.x - this.x);
int dy = Math.abs(target.y - this.y);
return dx * dx + dy * dy;
}
public double getDistanceTo(Point2D target)
{
double sqd = (double) this.getSquaredDistanceTo(target);
return Math.sqrt(sqd);
}
}