매일 풀기로 했었는데 ...ㅜㅜ
자소서 쓰고 노션 날라가고 정신이 너무 없어서 5일만에 돌아왔다.
킵고잉 ~!
알고리즘 분류
- 정렬
여태까지 푼거랑 유사한 정렬 문제인데,
이번에는 x좌표 -> y좌표 순으로 정렬한 다음 출력해야 한다.
2차원 배열에 넣고 Arrays.sort의 Comparator 메소드를 사용했다.
import java.util.*;
import java.io.*;
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());
}
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] n1, int[] n2) {
if (n1[0] == n2[0]) {
return n1[1] - n2[1];
} else {
return n1[0] - n2[0];
}
}
});
for (int i = 0; i < N; i++) {
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
}
람다식을 사용하면 따로 메서드를 구현하지 않고 바로 함수로 쓸 수 있다.
import java.util.*;
import java.io.*;
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());
}
Arrays.sort(arr, (n1, n2) -> {
if (n1[0] == n2[0]) {
return n1[1] - n2[1];
} else {
return n1[0] - n2[0];
}
});
for (int i = 0; i < N; i++) {
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
}
'Languages > Java' 카테고리의 다른 글
[BOJ 길라잡이/Java] 8일차 #10867 중복 빼고 정렬하기 (0) | 2025.03.18 |
---|---|
[BOJ 길라잡이/Java] 7일차 #11651 좌표 정렬하기 2 (0) | 2025.03.17 |
[BOJ 길라잡이/Java] 6일차 #1181 단어 정렬 (0) | 2025.03.12 |
[BOJ 길라잡이/Java] 5일차 #1026 보물 (0) | 2025.03.11 |
[BOJ 길라잡이/Java] 5일차 #1406 에디터 (0) | 2025.03.11 |