안녕하세요. 이번에는 백준 11650 좌표 정렬하기 문제를 풀어보려고 합니다.
https://www.acmicpc.net/problem/11650
Problem
2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
Solution
import java.io.*;
import java.util.*;
public class Main {
static int[][] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
arr = new int[N][2];
StringTokenizer st;
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, (s1, s2) -> {
if(s1[0] == s2[0]) {
return s1[1] - s2[1];
} else {
return s1[0] - s2[0];
}
});
for(int i = 0; i < N; i++) {
sb.append(arr[i][0] + " " + arr[i][1]).append("\n");
}
System.out.println(sb.toString());
}
}
이번 문제는 좌표 정렬하기 문제이다. 이번 문제도 기존에 포스팅했던 나이순 정렬 문제와 크게 다른 게 없는 문제이다. 만약 나이순 정렬 문제를 안 풀어봤으면 풀어보길 권장한다.
나이순 정렬 문제 링크
https://echung93.tistory.com/42
Arrays.sort 기능을 이용해서 Comparator 람다를 사용해서 x좌표가 같으면 y 좌표를 기준으로 오름 차순을 정렬하는 코드와 x좌표가 다르면 x좌표를 오름 차순으로 정렬하는 코드를 작성해주면 해결된다.
Arrays.sort(arr, (s1, s2) -> {
if(s1[0] == s2[0]) {
return s1[1] - s2[1];
} else {
return s1[0] - s2[0];
}
});
Performance
반응형
'백준 Algorithm > 백준 CLASS2' 카테고리의 다른 글
[백준] CLASS2 11866 요세푸스 문제 0 - JAVA [자바] (0) | 2023.10.16 |
---|---|
[백준] CLASS2 11050 이항 계수 1 - JAVA [자바] (2) | 2023.10.14 |
[백준] CLASS2 10866 덱 - JAVA [자바] (0) | 2023.10.13 |
[백준] CLASS2 10845 큐 - JAVA [자바] (0) | 2023.10.12 |
[백준] CLASS2 10828 스택 - JAVA [자바] (0) | 2023.10.11 |