[JAVA 문제 풀이] 310. 데이터 분석

프로그래머스 (250121)
Stupefyee's avatar
Jun 11, 2025
[JAVA 문제 풀이] 310. 데이터 분석
notion image
notion image
 

내가 작성한 코드

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

stupefyee