Java

[백준 11650] 좌표 정렬하기 (JAVA)

iheeeee6-6 2023. 2. 19. 22:42
728x90

https://www.acmicpc.net/problem/11650

 

11650번: 좌표 정렬하기

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

객체를 생성하여 x.y값을 비교 정렬하면 된다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;

public class test11650 {

	static class dot {
		int x;
		int y;

		dot(int x, int y) {
			this.x = x;
			this.y = y;
		}
	}

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		dot[] arr = new dot[n];
		for (int i = 0; i < n; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int a = Integer.parseInt(st.nextToken());
			int b = Integer.parseInt(st.nextToken());
			arr[i] = new dot(a, b);
		}
		
		Arrays.sort(arr, new Comparator<dot>() {
			public int compare(dot d1, dot d2) {
				if(d1.x==d2.x) {
					return d1.y-d2.y;
				}
				return d1.x - d2.x;
			}
		});
		
		for (int i = 0; i < n; i++)
			System.out.println(arr[i].x+" "+arr[i].y);
	}

}