코테/백준
[백준/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
반응형