프로그래머스 PCCE 기출문제 10번 데이터 분석 JAVA 풀이 (구현, 정렬)

2026. 7. 3. 15:57·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


📌 문제 개요

데이터는 [code, date, maximum, remain] 형태의 2차원 배열로 주어진다.

주어진 조건(ext < val_ext)을 만족하는 데이터만 추출한 뒤,

sort_by에 해당하는 값을 기준으로 오름차순 정렬하여 반환하는 문제이다.


📌 접근 방법

문자열(code, date, maximum, remain)을 그대로 비교하기보다는 배열의 인덱스로 변환하여 처리했다.

먼저 getIndex() 메서드로 ext와 sort_by를 각각 인덱스로 변환한 뒤, 조건에 맞는 데이터만 ArrayList<int[]>에 저장했다.

 

이후 Comparator.comparingInt()를 이용하여 원하는 컬럼 기준으로 정렬하고,

마지막에 List<int[]>를 int[][]로 변환하여 반환했다.


📌 핵심 아이디어

1. 문자열을 배열 인덱스로 변환

문자열을 배열 인덱스로 변환하면 여러 곳에서 재사용할 수 있고 코드도 간결해진다.

private static int getIndex(String type) {
    switch (type) {
        case "code": return 0;
        case "date": return 1;
        case "maximum": return 2;
        default: return 3;
    }
}

2. 조건에 맞는 데이터만 저장

ext에 해당하는 값이 기준값보다 작은 데이터만 리스트에 저장한다.

for (int[] d : data) {
    if (d[extIdx] < val_ext) {
        list.add(d);
    }
}

3. 원하는 컬럼 기준으로 정렬

Comparator.comparingInt()를 이용하면 원하는 컬럼을 기준으로 쉽게 오름차순 정렬할 수 있다.

list.sort(Comparator.comparingInt(d -> d[sortIdx]));

4. List를 2차원 배열로 변환

문제에서 요구하는 반환 타입인 int[][]로 변환하여 반환한다.

return list.toArray(new int[list.size()][]);
 

📌 전체 코드

import java.util.ArrayList;
import java.util.Comparator;

class Solution {
    public int[][] solution(int[][] data, String ext, int val_ext, String sort_by) {
        ArrayList<int[]> list = new ArrayList<>();

        int extIdx = getIndex(ext);
        int sortIdx = getIndex(sort_by);

        for (int[] d : data) {
            if (d[extIdx] < val_ext) {
                list.add(d);
            }
        }

        list.sort(Comparator.comparingInt(d -> d[sortIdx]));

        return list.toArray(new int[list.size()][]);
    }

    private static int getIndex(String type) {
        switch (type) {
            case "code": return 0;
            case "date": return 1;
            case "maximum": return 2;
            default: return 3;
        }
    }
}
 

📄 정리

  • 문자열을 배열 인덱스로 변환하여 중복 코드를 줄였다.
  • 조건에 맞는 데이터만 ArrayList에 저장한 뒤 정렬했다.
  • Comparator.comparingInt()를 이용해 원하는 컬럼 기준으로 정렬했다.
  • toArray()를 사용하여 List<int[]>를 int[][]로 변환했다.
  • 구현 문제에서 문자열을 인덱스로 매핑하는 방법과 컬렉션을 배열로 변환하는 방법을 익힐 수 있었다.
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

프로그래머스 문자열 안의 숫자 더하기 JAVA 풀이 (문자열, 구현, 아스키코드)  (0) 2026.07.05
프로그래머스 다트 게임 JAVA 풀이  (0) 2026.07.04
프로그래머스 체육복 JAVA 풀이 (그리디, 구현)  (0) 2026.07.02
프로그래머스 완주하지 못한 선수 JAVA 풀이 (HashMap, 해시)  (0) 2026.07.01
프로그래머스 분수의 덧셈 JAVA 풀이 (수학, 구현, 유클리드 호제법)  (0) 2026.06.30
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 문자열 안의 숫자 더하기 JAVA 풀이 (문자열, 구현, 아스키코드)
  • 프로그래머스 다트 게임 JAVA 풀이
  • 프로그래머스 체육복 JAVA 풀이 (그리디, 구현)
  • 프로그래머스 완주하지 못한 선수 JAVA 풀이 (HashMap, 해시)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN N
      • 코테(Solved.ac + Programmers) N
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    실기
    정렬
    solved.ac
    문자열
    자료구조
    프로그래머스
    springboot
    피보나치
    브루트포스
    시뮬레이션
    코딩테스트
    정처기오답노트
    Level2
    배열
    자바
    정보처리기사
    level0
    정처기실기
    백엔드개발자
    수학
    기출문제
    백준
    java
    완전탐색
    dp
    level1
    구현
    정보처리기사 실기 기출문제
    정처기
    알고리즘
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 PCCE 기출문제 10번 데이터 분석 JAVA 풀이 (구현, 정렬)
상단으로

티스토리툴바