[Programmers] 데이터 분석(Java)

이동기·2024년 10월 6일
1

이번에는 프로그래머스에서 데이터 분석 문제를 풀어보았습니다.

주어진 2차원 배열을 표로 생각하고 특정 컬럼과 주어진 파라미터를 기준으로 필터링 한 뒤 크기순 오름차순정렬하는 문제였습니다.

주의할점이 데이터를 객체나 맵을 이용해서 표로 억지로 만드려고 하지말고 주어진 배열 그대로 이용해서 처리하는게 중요한 것 같고 전체코드는 아래와 같습니다.


[코드 전체]

import java.util.*;
public class Solution {
    // data에서 ext 값이 val_ext보다 작은 데이터만 뽑은 후, sort_by에 해당하는 값을 기준으로 오름차순으로 정렬
    // 정렬한 데이터들이 담긴 이차원 정수 리스트 data
    // 어떤 정보를 기준으로 데이터를 뽑아낼지를 의미하는 문자열 ext
    // 뽑아낼 정보의 기준값을 나타내는 정수 val_ext
    // 정보를 정렬할 기준이 되는 문자열 sort_by
    public int[][] solution(int[][] data, String ext, int val_ext, String sort_by) {
        List<int[]> filterdList = new ArrayList<>();
        int extIdx = Ext.valueOf(ext.toUpperCase()).idx;
        int sortIdx = Ext.valueOf(sort_by.toUpperCase()).idx;
        for (int[] row : data) {
            if (row[extIdx] < val_ext) {
                filterdList.add(row);
            }
        }

        filterdList.sort(Comparator.comparingInt(o -> o[sortIdx]));

        return filterdList.toArray(new int[0][]);
    }

    private enum Ext {
        CODE(0),
        DATE(1),
        MAXIMUM(2),
        REMAIN(3);

        final int idx;

        Ext(int idx) {
            this.idx = idx;
        }
    }
}
profile
개발자가 되고 싶은 '개'발자입니다. https://github.com/lee-dong-gi

0개의 댓글