본문 바로가기
백준

[자바 :: 백준 11651 : 좌표 정렬하기2 #두가지 방법# ]

by javaman 2022. 7. 28.

문제 풀이 시나리오

1. 입력값을  2차원 배열에 저장

2. 2차원 배열[ [],[],[],]을 ( y오름차순->x오름차순 )정렬

 

문제

첫번째 풀이

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


public class Main {
	
	
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		int[][] arr = new int[n][2];
		
		for (int i = 0; i < n; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			arr[i][0] = Integer.parseInt(st.nextToken());
			arr[i][1] = Integer.parseInt(st.nextToken());
			
		}
		//함수형 인터페이스 Comparator 의 메서드 compare(e1,e2)
		// 양수 반환 -> e2 인덱스 0 일때 e1 인덱스 1(또는 양수)
		// 음수 반환 -> e2 인덱스 0 일때 e1 인덱스 -1(또는 음수)
		Arrays.sort(arr,(e1,e2)->{
        
			//y 가 같으면 x 오름차순 
            
			if (e1[1] == e2[1])
				return e1[0] - e2[0] ;
			//y 오름차순
            
			else
				return e1[1] - e2[1];
			
			
		});
		StringBuilder sb = new StringBuilder();
		for (int[] ar : arr) {
			sb.append(ar[0] +" " + ar[1]).append('\n');
			
		}
		
		System.out.print(sb);
		
		


		
	}
}

 

 

 

두번째 풀이



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 Main {
	
	
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		Integer[][] arr = new Integer[n][2];
		
		for (int i = 0; i < n; i++) {
			
			StringTokenizer st = new StringTokenizer(br.readLine());
			arr[i][0] = Integer.parseInt(st.nextToken());
			arr[i][1] = Integer.parseInt(st.nextToken());
			
		}
		//함수형 인터페이스 Comparator 의 메서드 compare(e1,e2)
		// 양수 반환 -> e1 인덱스  1 e2 인덱스 0
		// 음수 반환 -> e1 인덱스 -1 e2 인덱스 0
		Arrays.sort(arr,new Comparator<Integer[]>() {

			@Override
			public int compare(Integer[] o1, Integer[] o2) {
				if(o1[1] == o2[1])
					return o1[0]-o2[0];
				return o1[1] - o2[1];
			}

			
		});
		StringBuilder sb = new StringBuilder();
		for (Integer[] ar : arr) {
			sb.append(ar[0] +" " + ar[1]).append('\n');
			
		}
		
		System.out.print(sb);
		
		


		
	}
}