반응형
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]]로 정렬됨
그러므로 양수인 경우에는 o1이 o2보다 크다고 판단되어 o1이 o2보다 뒤에 위치하게 됨
d1[0] - d2[0]를 계산해서 음수가 나오면 바뀌지 않고 그대로다.
'코딩테스트 > 자바 코딩테스트' 카테고리의 다른 글
[JAVA] 프로그래머스 Lv.1 부족한 금액 계산하기 (0) | 2024.04.15 |
---|---|
[JAVA] 프로그래머스 PCCP 기출문제 1번 / 붕대 감기 (0) | 2024.04.15 |
[JAVA] 프로그래머스 Lv.1 최소직사각형 (1) | 2024.04.10 |
프로그래머스 Lv.0 배열 만들기2 Java (1) | 2024.02.07 |
Java 미니 프로젝트 - 영화 예매 프로그램 (0) | 2023.09.12 |