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

2025. 2. 16. 18:38·코딩 알고리즘 스터디

https://school.programmers.co.kr/learn/courses/30/lessons/250121

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

- 결과

data에서 ext값이 val_ext보다 작은 데이터만 뽑은 후,

sort_by에 해당하는 값을 기준으로 오름차순으로 정렬하여 return

 

- 변수 설명

  • 데이터는 ["코드 번호(code)", "제조일(date)", "최대 수량(maximum)", "현재 수량(remain)"]으로 구성
  • 제조일이 20300501 이전인 물건들을 현재 수량이 적은 순서
data = [[1, 20300104, 100, 80], [2, 20300804, 847, 37], [3, 20300401, 10, 8]]
  • 결과
data = [[3,20300401,10,8],[1,20300104,100,80]]

 

2. 문제 풀이 

ext와 val_ext를 통해 뽑아낼 데이터를 고른 후, Comparator로 오름차순으로 정렬한다.

sort와 lamda 표현식을 통해 Comparator을 구현해보았다. comparator는 객체를 기준에 맞게 정렬하거나, 다른 기준으로 비교할 때 유용하다.  

  • int compare(T o1, T o2)

 

  • 0: 두 객체가 같으면 0을 반환.
  • 음수: o1이 o2보다 작은 경우 음수를 반환.
  • 양수: o1이 o2보다 큰 경우 양수를 반환.

 

import java.util.ArrayList;
import java.util.List;

class Solution {
    public List<int[]> solution(int[][] data, String ext, int val_ext, String sort_by) {
        List<int[]> answer = new ArrayList<>();
        // 뽑아낼 데이터
        for (int[] d : data) {
            if (ext.equals("code")) {
                if (d[0] < val_ext) answer.add(d);
            } else if (ext.equals("date")) {
                if (d[1] < val_ext) answer.add(d);
            } else if (ext.equals("maximum")) {
                if (d[2] < val_ext) answer.add(d);
            } else {
                if (d[3] < val_ext) answer.add(d);
            }
        }
        // 오름차순 정렬
        answer.sort((d1, d2) -> { // Comparator
            if (sort_by.equals("code")) {
                return d1[0] - d2[0]; // 양수 - d1이 d2보다 크면 d2 먼저 배치
            } else if (sort_by.equals("date")) {
                return d1[1] - d2[1];
            } else if (sort_by.equals("maximum")) {
                return d1[2] - d2[2];
            } else {
                return d1[3] - d2[3];
            }
        });
        return answer;
    }
}

'코딩 알고리즘 스터디' 카테고리의 다른 글

프로그래머스 [2025 프로그래머스 코드챌린지 2차 예선] / 택배상자 꺼내기 - java  (1) 2025.02.24
프로그래머스 [PCCP 기출문제] 1번 / 동영상 재생기  (0) 2025.02.16
프로그래머스 Lv.1 대충 만든 자판도움말 - Java  (1) 2025.01.12
프로그래머스 Lv.1 [2024 KAKAO WINTER INTERNSHIP] 가장 많이 받은 선물 - JAVA  (0) 2025.01.05
프로그래머스 Lv.1 신고 결과 받기  (1) 2024.12.25
'코딩 알고리즘 스터디' 카테고리의 다른 글
  • 프로그래머스 [2025 프로그래머스 코드챌린지 2차 예선] / 택배상자 꺼내기 - java
  • 프로그래머스 [PCCP 기출문제] 1번 / 동영상 재생기
  • 프로그래머스 Lv.1 대충 만든 자판도움말 - Java
  • 프로그래머스 Lv.1 [2024 KAKAO WINTER INTERNSHIP] 가장 많이 받은 선물 - JAVA
Rabet
Rabet
  • 블로그 메뉴

    • 관리자
    • 글쓰기
  • Rabet
    卯
    Rabet
  • 전체
    오늘
    어제
    • Root (141)
      • KT AIVLE School (85)
        • Start (4)
        • Python프로그래밍 & 라이브러리 (6)
        • 데이터 처리 및 분석 (7)
        • 데이터 분석 및 의미 찾기 (7)
        • 웹크롤링 (10)
        • 머신러닝 (10)
        • 딥러닝 (6)
        • 시각지능 딥러닝 (10)
        • 언어지능 딥러닝 (6)
        • JAVA (4)
        • SQL (2)
        • 가상화 클라우드 (5)
        • 프로젝트 (8)
      • QA (3)
        • 오류사항 (1)
      • 웹공부 (14)
        • SPRING (11)
        • React (1)
      • 코딩 알고리즘 스터디 (23)
      • 코딩테스트 (9)
        • JAVA (8)
        • HTML (1)
      • CS공부 (3)
      • 자격증공부 (4)
        • 정보처리기사 (1)
        • 컴퓨터활용능력 1급 (1)
        • AICE Associate (1)
        • ISTQB (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
Rabet
프로그래머스 [PCCE 기출문제] 10번 / 데이터 분석
상단으로

티스토리툴바