코테/프로그래머스

[프로그래머스/Level1] [PCCE 기출문제] 10번 / 데이터 분석 (JAVA)

imname1am 2024. 5. 16. 18:16
반응형

📖 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

💡  풀이 방식

• 브루트포스

1. 리스트에 val_ext보다 작은 데이터만 뽑아 저장한다.

2. 해당 리스트를 sorty_by에 해당하는 값 기준으로 오름차순 정렬한다.

3. 리스트를 2차원 배열로 변환한다.

 

 

+ ext, sort_by 정보의 인덱스 구하는 방법을 동일하므로 메소드로 만들어 사용한다.

// 배열에서 데이터의 인덱스 구하는 메소드
private static int getIdx(String str) {
    switch(str) {
        case "code": return 0;
        case "date": return 1;
        case "maximum": return 2;
        case "remain": return 3;
    }
    return -1;
}

 

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.util.*;
 
class Solution {
    public int[][] solution(int[][] data, String ext, int val_ext, String sort_by) {
        List<int[]> list = new ArrayList<>();   // val_ext보다 작은 데이터만 저장할 리스트
        int infoNum = getIdx(ext);  // 데이터 뽑아낼 정보의 인덱스 구하기
        
        for(int[] d : data) {
            if(d[infoNum] < val_ext) {  // val_ext보다 작은 데이터만 뽑기
                list.add(d);
            }
        }
        
        int sortNum = getIdx(sort_by);  // sort_by에 해당하는 값의 인덱스 구하기
        Collections.sort(list, (o1, o2) -> o1[sortNum] - o2[sortNum]);  // 위에서 구한 값 기준 오름차순 정렬
        
        // 리스트를 2차원 배열 값으로 변환
        int[][] answer = new int[list.size()][4];
        for(int i = 0 ; i < answer.length ; i++) {
            answer[i] = list.get(i);
        }
        
        return answer;
    }
    
    // 배열에서 데이터의 인덱스 구하는 메소드
    private static int getIdx(String str) {
        switch(str) {
            case "code"return 0;
            case "date"return 1;
            case "maximum"return 2;
            case "remain"return 3;
        }
        return -1;
    }
}
cs

 

 

 

 


 

1회독 2회독 3회독 4회독 5회독
V        

 

반응형