Time Limit: 1s
Memory Limit: 128MB
다음 요구사항을 만족하는 프로그램을 작성하라.
■ Point 클래스는 x좌표와 y좌표를 데이터를 가진다. Point 객체들을 좌표에 따라 오름차순으로 정렬하기 위해 Comparable 인터페이스를 정의하라. Point 개체들에 대해서 먼저 x좌표를 기준으로 정렬하고, 복수의 Point가 동일한 x좌표를 가진다면 y좌표로 정렬하라.
■ y좌표를 먼저 정렬하고, 그 다음 x좌표로 정렬하는 CompareY를 작성하라.
(Sort points in a plane) Write a program that meets the following requirements:
■ Define a class named Point with two data fields x and y to represent a point’s x- and y-coordinates. Implement the Comparable interface for comparing the points on x-coordinates. If two points have the same x-coordinates, compare their y-coordinates.
■ Define a class named CompareY that implements Comparator. Implement the comparemethod to compare two points on their y-coordinates. If two points have the same y-coordinates, compare their x-coordinates.
■ Randomly create 100 points and apply the Arrays.sort method to display the points in increasing order of their x-coordinates and in increasing order of their y-coordinates, respectively.
* Line 1 : Point 개수 N (1~2,000 범위의 정수)
* Line 2~N+1 : x y (x,y는 -1,000~1,000범위의 정수)
X와 Y로 정렬된 점을 Sample Output과 같은 형식으로 출력
import java.util.Arrays; import java.util.Scanner; import java.util.Comparator; public class Main { // Each row in points represents a point private double[][] points; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); Point[] points = new Point[N]; for (int i = 0; i < points.length; i++) { points[i] = new Point(sc.nextInt(), sc.nextInt()); } System.out.println("Sort on x-coordinates"); Arrays.sort(points); for (int i = 0; i < points.length; i++) { System.out.println(points[i]); } System.out.println("Sort on y-coordinates"); Arrays.sort(points, new CompareY()); for (int i = 0; i < points.length; i++) { System.out.println(points[i]); } } YOUR_CODE }
5 1 3 -10 -9 0 3 -2 9 0 4
Sort on x-coordinates (-10.0, -9.0) (-2.0, 9.0) (0.0, 3.0) (0.0, 4.0) (1.0, 3.0) Sort on y-coordinates (-10.0, -9.0) (0.0, 3.0) (1.0, 3.0) (0.0, 4.0) (-2.0, 9.0)
public String toString() { return "(" + x + ", " + y + ")"; }
JAVA2015 PE20.4