[백준] 11650 좌표 정렬하기
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
이 문제는 사실 11651 좌표 정렬하기2와 같은 문제라고 봐도 무방하다. (https://yoloaeee.tistory.com/101)
[백준] 11651 좌표 정렬하기2
https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ..
yoloaeee.tistory.com
정렬하기 전 데이터를 저장하는 방법을 2중 배열을 사용해서 좀 더 간단하게 바꿔보았다.
문제 및 입출력
코드
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] jwapyo = new int[n][2];
// n개만큼 입력받은 후 jwapyo[0], jwapyo[1]에 각각 x, y좌표를 저장
for(int i=0; i<n; i++)
{
jwapyo[i][0] = sc.nextInt();
jwapyo[i][1] = sc.nextInt();
}
Arrays.sort(jwapyo, new Comparator<int[]>()
{
@Override
public int compare(int[] o1, int[] o2)
{
// x좌표가 다를 때에는 오름차순 정렬(우선순위)
if(o1[0]!=o2[0])
{
return o1[0]>o2[0]?1:-1;
}
// x좌표가 같을 때에는 y좌표를 기준으로 오름차순 정렬
else
{
return o1[1]>o2[1]?1:-1;
}
}
});
for(int i=0; i<jwapyo.length; i++)
{
System.out.println(jwapyo[i][0] + " " + jwapyo[i][1]);
}
sc.close();
}
}