보라코딩
프로그래머스 자바 :: PCCE 기출문제 10번 데이터 분석 본문
1단계고 비교적 해볼만 하다고 느꼈으나
정렬을 어떻게 해야할지 몰랐고
배웠다..!
import java.util.*;
class Solution {
public int[][] solution(int[][] data, String ext, int val_ext, String sort_by) {
String[] dataArr = {"code", "date", "maximum", "remain"};
int ext_Num = 0;
int sort_by_Num = 0;
for (int i = 0; i < dataArr.length; i++) {
if (dataArr[i].equals(ext)) {
ext_Num = i;
}
if (dataArr[i].equals(sort_by)) {
sort_by_Num = i;
}
}
List<int[]> list = new ArrayList<>();
for (int[] row : data) {
if (row[ext_Num] < val_ext) {
list.add(row);
}
}
final int finalSortByNum = sort_by_Num;
list.sort(Comparator.comparingInt(row -> row[finalSortByNum]));
int[][] answer = new int[list.size()][data[0].length];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
list 오름차순
list.sort(Comparator.comparingInt(row -> row[finalSortByNum]));
list 내림차순
list.sort(Comparator.comparingInt(row -> row[finalSortByNum]).reversed());
다른 사람 코드!!
이건 너무 갈길이 멀고..
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)
.sorted((o1 ,o2) -> o1[sortIdx]-o2[sortIdx]).toArray(int[][]::new);
return answer;
}
}
이건 쉬우면서 좀 더 깔끔한 코드
import java.util.*;
class Solution {
public List<int[]> solution(int[][] data, String ext, int val_ext, String sort_by) {
List<int[]> list = new ArrayList<>();
String[] s = {"code","date","maximum","remain"};
int extIdx=0, sortIdx=0;
for(int i=0; i<4; i++){
if(ext.equals(s[i])) extIdx=i;
if(sort_by.equals(s[i])) sortIdx=i;
}
final int si=sortIdx;
for(int i=0; i<data.length; i++){
if(data[i][extIdx]<val_ext) list.add(data[i]);
}
// *lambda, Comparator 사용시 final 이나 effectively final여야한다!
Collections.sort(list,(o1,o2)->o1[si]-o2[si]);
return list;
}
}
'프로그래머스 (java)' 카테고리의 다른 글
프로그래머스 자바 :: PCCE 기출문제 9번 이웃한 칸 (0) | 2024.05.25 |
---|---|
프로그래머스 자바 :: 달리기경주 (1단계) (0) | 2024.05.22 |
프로그래머스 자바 :: 가장 많이 받은 선물 (0) | 2024.05.19 |
프로그래머스 자바 :: 탐욕법 (0) | 2023.12.19 |
프로그래머스 자바 :: 완전탐색 (0) | 2023.12.11 |