꾸물꾸물 졔의 개발공부

백준 11650 - 좌표 정렬 (JAVA) + Arrays.sort 람다식 본문

알고리즘/백준

백준 11650 - 좌표 정렬 (JAVA) + Arrays.sort 람다식

체제 2021. 10. 18. 14:15

출처 - 백준 알고리즘

 

Arrays.sort 람다식을 활용하여 접근 

new Comparator 를 사용해도 되지만 , 이번에는 람다식을 사용해 보았다 .

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package jihye01;
import java.util.*;
import java.io.*;
public class bj11650 {
    public static void main(String args[])throws IOException{
        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
        int num= Integer.parseInt(br.readLine());
        String s[]= new String [num];
        int get[][]= new int[num][2];
        for(int i=0; i<num; i++) {
            s[i]=br.readLine();
        }
        StringTokenizer st ;
        for(int i=0; i<num; i++) {
            st=new StringTokenizer(s[i], " ");
            for(int j=0; j<2; j++) {
                get[i][j]= Integer.parseInt(st.nextToken());
            }
        }
         
        // 조건에 따라 정렬 
        Arrays.sort(get, (e1,e2) -> {
            if(e1[0== e2[0])
                return e1[1]-e2[1];
            else 
                return e1[0]-e2[0];
        });
        
        for(int i=0; i<num ; i++) {
            System.out.println(get[i][0]+ " "+ get[i][1]);
        }
    }
 
}
cs

 

BufferedReader 를 통해서, 입력값을 입력받고, 

BufferedReader 를 사용하면 한문자당 인식하지 못하고 한줄로 인식하기 때문에 StringTokenizer 를 사용하여, ' 3 4 ' 와 같은 입력값을 각 배열 get[i][0] = 3, get[i][1] = 4 로 나누어서 저장해 주었다. 

 

Arrays.sort ( get, (e1, e2) -> ) 라는 람다식을 활용하여서, 배열 e1 과 e2 를 비교하여 정렬하였다 .

e1[0] 과 e2[0] , 즉 , 두 배열의 x 좌표가 같다면, y 좌표를 비교하여서 더 작은 값을 가진것을 앞으로 정렬하고 , 

두배열의 x 좌표가 다르다면, x 좌표를 비교하여서 더 작은 값을 앞으로 정렬하였다 . 

 

'알고리즘 > 백준' 카테고리의 다른 글

백준 10825 - 국영수 (JAVA)  (0) 2021.11.25
백준 1874 - 스택수열 (JAVA)  (0) 2021.11.24
백준 1181 - 단어정렬 (JAVA)  (0) 2021.09.28
백준 4673 - 셀프넘버 (JAVA)  (0) 2021.09.13
백준 18258 - JAVA 큐 구현하기  (0) 2021.07.16