코테/백준

[백준/JAVA] 11650번: 좌표 정렬하기

imname1am 2023. 3. 21. 13:05
반응형

🔺 문제

 

11650번: 좌표 정렬하기

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

www.acmicpc.net

 

🔺 코드

import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException{
	    var 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++) {
	        var st = new StringTokenizer(br.readLine()," ");
	        
	        arr[i][0] = Integer.parseInt(st.nextToken());
	        arr[i][1] = Integer.parseInt(st.nextToken());
	    }
	    
	    // x좌표가 증가하는 순으로 정렬
	    // x좌표가 같으면 y좌표가 증가하는 순으로 정렬
	    Arrays.sort(arr, new Comparator<int[]>() {
	        @Override
	        public int compare(int[] o1, int[] o2) {
	            if(o1[0] == o2[0])    // x 좌표 같으면
                        return o1[1] - o2[1]; // y 오름차순
	            else
                        return o1[0] - o2[0]; 
	        }
	    });
	    
	    // 출력
	    var sb = new StringBuilder();
	    for(int i = 0 ; i < n ; i++) {
	        sb.append(arr[i][0] + " " + arr[i][1]).append("\n");
	    }
	 
	    System.out.println(sb);
	}
}
✅ 해결 아이디어
- 2차원 배열 정렬 (Arrays.sort(배열, 비교할 인자) )
 ①  Arrays.sort()에서 Comparator 인터페이스 사용
  Arrays.sort() 람다식 사용

x 좌표가 증가하는 순으로.

x좌표가 같으면 y좌표가 증가하는 순서로 정렬.

 

+ 람다식 사용하면 이렇게...

Arrays.sort(arr, (e1, e2) -> {
				if(e1[0] == e2[0]) {
					return e1[1] - e2[1];
				} else {
					return e1[0] - e2[0];
				}
			});

(참고)

- 풀이

 

[백준알고리즘-JAVA]11650번 풀이(좌표 정렬하기) - 초보도 이해하는 풀이

안녕하세요 인포돈 입니다. 백준 알고리즘 11650번 풀이입니다. * 참고사항 - 개발환경은 eclipse을 기준으로 작성되었습니다. - java언어를 이용하여 문제를 풀이합니다. - 알고리즘 문제는 풀이를

infodon.tistory.com

 

[Java] 백준 11650번 [좌표 정렬하기] 자바

[Java] 백준 11650번 [좌표 정렬하기] 자바

velog.io

반응형