-
[백준]11651번: 좌표 정렬하기 2 | 배열 정렬, 람다식 | 코딩테스트알고리즘 2023. 8. 10. 12:21
문제: https://www.acmicpc.net/problem/11651
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { // 2차원 평면 x축, y축 // 입력, 계산, 출력 // 입력 : N개의 점(x, y) // - int x, int y -> int[] Scanner sc = new Scanner(System.in); int N = sc.nextInt(); // 점의 개수 N -> N개 만큼의 점(x, y쌍)이 존재 -> N번 반복 int[][] pointArr = new int[N][2]; // 감싸주는게 먼저 카운트가 들어가야함 for (int i = 0; i < N; i++) { // N에 비례해서 자동으로 N번 스캔 // 점마다의 x, y 쌍을 받아오는 것 (2번. x에 대한 것 y에 대한 것) int x = sc.nextInt(); int y = sc.nextInt(); // System.out.println("x : " + x + " y : " + y); int[] point = new int[2]; // 2개의 자리 point[0] = x; point[1] = y; // 일반적으로 쓰는 좌표는 (x,y) 형태라서... pointArr[i] = point; } sc.close(); // 계산 : (1) y좌표가 증가하는 순 (2) x좌표가 증가하는 순 // 정렬하는 기준, y좌표가 먼저, x좌표가 다음 // 증가하는 순 => 오름차순(인덱스가 증가하는 순) Arrays.sort(pointArr, (e1, e2) -> { if (e1[1] != e2[1]) { return e1[1] - e2[1]; // y끼리의 차이로 정렬 // sort : +면 e1이 뒤로 가고, -면 e2가 뒤로 가고, 0이면 그대로. } else { // 2개의 y좌표가 같을 떄 return e1[0] - e2[0]; } }); // 비교의 기준이 되는 메서드가 들어감. // 메서드를 외부에서 별도로 정의하지 않고도 넣어주는 방법 // 람다식 : (매개변수) -> { 메서드의 본문(실행문) } // https://www.w3schools.com/java/java_lambda.asp // 출력 : 정렬한 결과를 출력 for (int[] point : pointArr) { // System.out.println(point[0] + " : " + point[1]); System.out.println(point[0] + " " + point[1]); } } }
- 람다식 : (매개변수) -> { 메서드의 본문(실행문) } : https://www.w3schools.com/java/java_lambda.asp
그대로 제출했더니
허허;;
코드를 간결하게 바꾸겠다.
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[][] pointArr = new int[N][2]; for (int i = 0; i < N; i++) { int x = sc.nextInt(); int y = sc.nextInt(); int[] point = new int[2]; // 2개의 자리 point[0] = x; point[1] = y; pointArr[i] = point; } sc.close(); Arrays.sort(pointArr, (e1, e2) -> { if (e1[1] != e2[1]) { return e1[1] - e2[1]; } else { return e1[0] - e2[0]; } }); for (int[] point : pointArr) { System.out.println(point[0] + " " + point[1]); } } }
맞았다.
'알고리즘' 카테고리의 다른 글
큐 구현하기 | ArrayList, LinkedList, ArrayDeque (0) 2023.08.10 스택과 큐의 기본 개념 | visualgo.net (0) 2023.08.10 [프로그래머스] k번째 수 | 정렬 | 코딩테스트 (0) 2023.08.09 [프로그래머스] 제일 작은 수 제거하기 | 배열, 리스트 | 코딩테스트 (0) 2023.08.09 [백준]개수 세기 | 배열 | 코딩테스트 (0) 2023.08.09