본문 바로가기
Algorithm/Baekjoon

Baekjoon 11651 좌표 정렬하기 2 JAVA

by Hunveloper 2022. 1. 24.
728x90
 

11651번: 좌표 정렬하기 2

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

www.acmicpc.net

문제

2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.

참조
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st =  new StringTokenizer(br.readLine());
		int n=Integer.parseInt(st.nextToken());
		ArrayList<ArrayList<Integer>> arr = new ArrayList<ArrayList<Integer>>();
		
		for(int i=0;i<n;i++) {
			arr.add(new ArrayList<>());
			st = new StringTokenizer(br.readLine());
			arr.get(i).add(Integer.parseInt(st.nextToken()));
			arr.get(i).add(Integer.parseInt(st.nextToken()));
		}
					
		Collections.sort(arr, new Comparator<ArrayList<Integer>>() {
			@Override
			public int compare(ArrayList<Integer> o1, ArrayList<Integer> o2) {
				if(o1.get(1).compareTo(o2.get(1))==0)
					return o1.get(0).compareTo(o2.get(0));
				else
					return o1.get(1).compareTo(o2.get(1));
			}
		});
				
		for(int i=0;i<n;i++)
			System.out.println(arr.get(i).get(0)+" "+arr.get(i).get(1));
		
	}
}
728x90
728x90

'Algorithm > Baekjoon' 카테고리의 다른 글

Baekjoon 11718 그대로 출력하기 JAVA  (0) 2022.01.27
Baekjoon 2615 오목 JAVA  (0) 2022.01.26
Baekjoon 1764 듣보잡 JAVA  (0) 2022.01.24
Baekjoon 1003 피보나치 함수 JAVA  (0) 2022.01.23
Baekjoon 11650 좌표 정렬하기 JAVA  (0) 2022.01.23

댓글