250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 2025 프로그래머스 코드챌린지 2차 예선
- controller
- 리액트네이티브
- Spring
- PCCE
- node.js
- map
- javascript
- project
- React Native
- 프로젝트
- 파이어베이스
- ReactNative
- 리액트 네이티브
- 스프링
- 자바스크립트
- expo
- 코딩
- java
- 티스토리챌린지
- 오블완
- React
- firebase
- 자바
- 리액트
- 백엔드
- 코테
- 프로그래머스
- 태그
- 코딩테스트
Archives
- Today
- Total
양갱의 개발 블로그
[프로그래머스] [PCCE 기출문제] 10번 / 데이터 분석(Java) 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/250121
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
1. ext, val_ext, sortby가 매개변수로 오지만 각 확인하는 index값이 다릅니다.
2. 작은 순서대로 정렬해야 합니다.
ext와 sort_by를 정리해봤습니다.
초기에 인덱스 값을 박아버리는 형태로 했는데 여기에서 오류가 난것 같습니다. 그래서 특정값의 인덱스를 알아낼 수 있도록 indexOf함수를 사용하도록 수정했습니다. 오랜만에 자바를 하니까 Comparator라는 것을 완전 잊고 있었네요. Comparator 공부해서 포스팅해보겠습니다.
초기 코드(테스트 코드 성공 -> 제출 시 테스트 케이스 실패)
import java.util.*;
import java.util.Comparator;
class Solution {
public int[][] solution(int[][] data, String ext, int val_ext, String sort_by) {
int[][] answer = {};
// ext : code, date 중 하나
// sort_by : maximum, remain 중 하나
// data에서 ext값이 val_ext갑소바 작은 데이터만 뽑고 sort_by에 맞춰서 정렬해야한다
int extIndex = ext == "code" ? 0:1;
int sortIndex = sort_by == "maximum"? 2 : 3;
ArrayList<int[]> beforeSort = new ArrayList<int[]>();
for (int i=0; i<data.length; i++){
if(data[i][extIndex] < val_ext){
beforeSort.add(data[i]);
}
}
beforeSort.sort(Comparator.comparingInt(a -> a[sortIndex]));
answer=beforeSort.toArray(int[][]::new);
return answer;
}
}
최종코드
import java.util.*;
import java.util.Comparator;
class Solution {
public int[][] solution(int[][] data, String ext, int val_ext, String sort_by) {
int[][] answer = {};
// ext : code, date 중 하나
// sort_by : maximum, remain 중 하나
// data에서 ext값이 val_ext갑소바 작은 데이터만 뽑고 sort_by에 맞춰서 정렬해야한다
String[] list = {"code", "date", "maximum", "remain"};
// int extIndex = ext == "code" ? 0:1;
// int sortIndex = sort_by == "maximum"? 2 : 3;
ArrayList<int[]> beforeSort = new ArrayList<int[]>();
for (int i=0; i<data.length; i++){
if(data[i][Arrays.asList(list).indexOf(ext)] < val_ext){
beforeSort.add(data[i]);
}
}
beforeSort.sort(Comparator.comparingInt(a -> a[Arrays.asList(list).indexOf(sort_by)]));
answer=beforeSort.toArray(int[][]::new);
return answer;
}
}
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.1 추억 점수(Java) (0) | 2025.03.29 |
---|---|
[프로그래머스] [2025 프로그래머스 코드챌린지 2차 예선] 서버 증설 횟수(Java) (0) | 2025.03.27 |
[프로그래머스] [2025 프로그래머스 코드챌린지 2차 예선] 유연근무제(Java) (0) | 2025.03.27 |
[프로그래머스] [2025 프로그래머스 코드챌린지 2차 예선] 택배 상자 꺼내기(Java) (0) | 2025.03.25 |
[프로그래머스] [PCCE 기출문제] 9번 / 이웃한 칸 (Java) (0) | 2024.11.16 |