반응형
import java.util.*;
class Solution {
    public int[][] solution(int[][] data, String ext, int val_ext, String sort_by) {
        
        List<int []> result = new ArrayList<>();
        for(int[] da : data){
            if(ext.equals("code")){
                if(da[0] < val_ext){
                    result.add(da);
                }
            }
            if(ext.equals("date")){
                if(da[1] < val_ext){
                    result.add(da);
                }
            }
            if(ext.equals("maximum")){
                if(da[2] < val_ext){
                    result.add(da);
                }
            }
            if(ext.equals("remain")){
                if(da[3] < val_ext){
                    result.add(da);
                }
            }
        }
        
        if(sort_by.equals("code")){
            result.sort((d1, d2) -> d1[0] - d2[0]);
        }
         if(sort_by.equals("date")){
            result.sort((d1, d2) -> d1[1] - d2[1]);
        }
         if(sort_by.equals("maximum")){
            result.sort((d1, d2) -> d1[2] - d2[2]);
        }
         if(sort_by.equals("remain")){
            result.sort((d1, d2) -> d1[3] - d2[3]);
        }
        
        int[][] answer = new int[result.size()][data[0].length];
        for(int i=0; i<answer.length; i++){
            answer[i] = result.get(i);
        }
        
        return answer;
    }
}

비교적 간단한 문제 였다. 

여기서 result.sort((d1,d2) -> d1[0] - d2[0]) 이 코드는 람다 표현식이다.

이 람다 표현식은 두 개의 배열을 입력으로 받아서 첫 번째 배열의 첫 번째 요소(d1[0])에서 두 번째 배열의 첫 번째 요소(d2[0])를 뺀 값을 반환한다.

 

예를 들어 다음과 같은 리스트가 있다고 가정해보자

[[3, 10], [1, 20], [5, 5]]

 

d1[0] - d2[0]를 계산해보면

3 - 1 = 2 양수

따라서 [1,20]은 [3,10] 보다 앞에 위치 해야함

리스트는 [[1, 20], [3, 10], [5, 5]]로 정렬됨

그러므로 양수인 경우에는 o1o2보다 크다고 판단되어 o1o2보다 뒤에 위치하게 됨

 

d1[0] - d2[0]를 계산해서 음수가 나오면 바뀌지 않고 그대로다.

+ Recent posts