코드 작성
이제 흐름에 따라 차근차근 코드를 작성해봅시다. 우선 좌표를 표현해야 하니 좌표를 나타내는 클래스를 다음과 같이 만들어 줍니다.
private static class Point {
public final long x, y;
private Point(long x, long y) {
this.x = x;
this.y = y;
}
}
데이터를 나타내는 클래스이므로 final 키워드를 사용하여 불변성을 갖게 하고, 생성자로 초기화할 수 있게 해줍니다. 문제에서 좌표 범위가 주어지지 않았기 때문에 x, y는 long으로 표현합니다. 문제 조건 중 1000×1000 크기 이내에서 표현된다는 조건은 찍히는 별들 사이의 거리가 멀지 않다는 조건일 뿐, 실제 좌표 값이 작다는 의미가 아니므로 long으로 좌표를 다루어야 오버플로가 발생하지 않습니다.
앞서 살펴본 흐름에 따라 하나씩 알아보겠습니다.