11650번: 좌표 정렬하기
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
이상하게 풀었다가 시간 초과나서 못풀고 있었다.
답 찾아보다가 람다식이라는 걸 쓴다는 걸 알았는데 공부할 시간이 없어서 놓고 있다가 이제야 다시 했다!
실은 파이썬 공부하다가 람다가 나왔는데 파이썬으로 람다를 보니깐 이해가 살짝 되는 것 같았다!
그러고 갑자기 문제가 생각나서 자바로 풀어봤다!
대에충 이해한 거는 Arrays.sort에 arr를 넣고 그 다음 인자에 함수를 넣어서 변형(?)할 수 있다.
때문에 두 수의 차를 구해서 정렬하는 기존 sort에서 내가 원하는 기준으로 바꿔서 정렬을 할 수 있다!
이 때, sort(arr, 함수)에 들어가는 함수를 람다식으로 넣어준 것이다! (e1, e2) -> {어쩌구...}
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int [][] arr = new int[n][2];
for (int i = 0; i < n; i++) {
arr[i][0] = sc.nextInt();
arr[i][1] = sc.nextInt();
}
Arrays.sort(arr, (e1, e2) -> {
if (e1[0] == e2[0]) {
return e1[1] - e2[1];
} else {
return e1[0] - e2[0];
}
});
for (int i = 0; i < n; i++) {
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
}
두고두고 헷갈릴 문제이다. ㅋㅋ
자주 봐야겠따
'BOJ' 카테고리의 다른 글
[BOJ] [JAVA] 4134번 다음 소수 (0) | 2024.01.07 |
---|---|
[BOJ] [JAVA] 13241번 최소공배수 (0) | 2024.01.06 |
[BOJ] [JAVA] 10816번 숫자 카드 2 (0) | 2024.01.06 |
[BOJ] [JAVA] 7785번 회사에 있는 사람 (0) | 2024.01.06 |
[BOJ] [JAVA] 18870번 좌표 압축 (2) | 2024.01.06 |
[BOJ] [JAVA] 10815번 숫자 카드 (1) | 2024.01.06 |
[Programmers][Python] 소수 찾기 (0) | 2023.12.29 |
[BOJ] [JAVA] 1038번 감소하는 수 (0) | 2023.12.20 |