

내가 작성한 코드
import java.util.*;
class Solution {
public int[][] solution(int[][] data, String ext, int val_ext, String sort_by) {
int[][] answer = new int[0][0];
// val_ext 보다 낮은 값 추출하기
switch (ext) {
case "code":
answer = Arrays.stream(data)
.filter(row -> row[0] < val_ext)
.toArray(int[][]::new);
break;
case "date":
answer = Arrays.stream(data)
.filter(row -> row[1] < val_ext)
.toArray(int[][]::new);
break;
case "maximum":
answer = Arrays.stream(data)
.filter(row -> row[2] < val_ext)
.toArray(int[][]::new);
break;
case "remain":
answer = Arrays.stream(data)
.filter(row -> row[3] < val_ext)
.toArray(int[][]::new);
break;
}
// 정렬하기
switch (sort_by) {
case "code":
Arrays.sort(answer, Comparator.comparingInt(row -> row[0]));
break;
case "date":
Arrays.sort(answer, Comparator.comparingInt(row -> row[1]));
break;
case "maximum":
Arrays.sort(answer, Comparator.comparingInt(row -> row[2]));
break;
case "remain":
Arrays.sort(answer, Comparator.comparingInt(row -> row[3]));
break;
}
return answer;
}
}
다른 사람의 코드
import java.util.*;
class Solution {
public int[][] solution(int[][] data, String ext, int val_ext, String sort_by) {
String[] arr = { "code", "date", "maximum", "remain" }; // 컬럼 이름 배열
List<String> columnList = Arrays.asList(arr); // 컬럼 이름을 리스트로 변환 >> 인덱스 추출에 용이
int extIdx = columnList.indexOf(ext); // 추출 기준 인덱스 가져오기
int sortIdx = columnList.indexOf(sort_by); // 정렬 기준 인덱스 가져오기
int[][] answer = Arrays.stream(data)
.filter(o1 -> o1[extIdx] < val_ext) // val_ext보다 작은 값 필터링
.sorted((o1, o2) -> o1[sortIdx] - o2[sortIdx]) // sort_by 기준으로 정렬
.toArray(int[][]::new); // 결과를 2차원 배열로 변환
return answer;
}
}
Share article