백준 11651번
https://www.acmicpc.net/problem/11651
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
좌표 정렬하기 1과 똑같은 문제이다
대신 정렬이 x좌표가 아닌 y좌표를 기준으로 오름차순 정렬한다는 것 만 바뀌었으므로
설명은 이전에 했던 것으로 대체!
Pass
import java.util.*; import java.io.*; public class Main { static int arr[][]; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(br.readLine()); arr = new int[N][2]; for(int i=0; i<N; i++) { st = new StringTokenizer(br.readLine()); arr[i][0] = Integer.parseInt(st.nextToken()); arr[i][1] = Integer.parseInt(st.nextToken()); } Arrays.sort(arr, (arr_1, arr_2) -> { if(arr_1[1] == arr_2[1]) { return arr_1[0] - arr_2[0]; } else { return arr_1[1] - arr_2[1]; } }); for(int i=0; i<N; i++) { sb.append(arr[i][0] + " " + arr[i][1]).append('\n'); } System.out.println(sb); } }
import java.util.*; import java.io.*; import java.util.Comparator; public class Main { static Integer arr[][]; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(br.readLine()); Integer arr[][] = new Integer[N][2]; for(int i=0; i<N; i++) { st = new StringTokenizer(br.readLine()); arr[i][0] = Integer.parseInt(st.nextToken()); arr[i][1] = Integer.parseInt(st.nextToken()); } Arrays.sort(arr, new Comparator<Integer[]>() { @Override public int compare(Integer[] o1, Integer[] o2) { if(o1[1].equals(o2[1])) { return o1[0] - o2[0]; } else { return o1[1] - o2[1]; } } }); for(int i=0; i<N; i++) { sb.append(arr[i][0] + " " + arr[i][1]).append('\n'); } System.out.println(sb); } }