728x90
코드 힌트
- 필터링:
- 입력된 데이터 중에서 특정 조건을 만족하는 항목들만 선택합니다.
- 예를 들어, 주어진 기준 값 이하인 항목들만 선택하여 새로운 리스트에 저장합니다.
- 배열 변환:
- 필터링된 데이터를 리스트에서 이차원 배열로 변환합니다.
- 몇 개의 데이터가 들어올지 모르기 때문에 List를 사용합니다.
- 정렬:
- 정렬 기준에 따라 데이터를 정렬합니다.
- 예를 들어, "날짜"나 "코드" 등을 기준으로 배열을 오름차순으로 정렬합니다.
- 오름차순 : 1, 4, 6, 10, 46, 100 처럼 작은 숫자에서 큰 숫자로 정렬하는 것
- 정렬 방법:
- 배열의 요소들을 비교하여 올바른 위치에 삽입하는 방식으로 정렬합니다.
- 이 과정에서 각 요소의 값을 비교해가며 데이터를 정리합니다.
- sort()로 하셔도 되지만 따로 메소드를 만들어서 정렬하셔도 좋습니다.
정답은 더보기 클릭
더보기
import java.util.*;
class Solution {
public int[][] solution(int[][] data, String ext, int val_ext, String sort_by) {
// 필터링된 데이터를 저장할 리스트 생성
List<int[]> list = new ArrayList<>();
// 필터링 기준 인덱스 설정
int compareIndex = getIndex(ext);
// 필터링: 데이터에서 특정 기준 값 이하의 항목만 선택
for (int[] datum : data) {
if (datum[compareIndex] <= val_ext) {
list.add(datum);
}
}
// 필터링된 결과를 배열로 변환
int[][] result = new int[list.size()][4];
for (int i = 0; i < list.size(); i++) {
result[i] = list.get(i);
}
// 정렬 기준 인덱스 설정
int sortedIndex = getIndex(sort_by);
// 배열을 정렬하는 메서드 호출
sortedArr(result, sortedIndex);
// 최종 결과 반환
return result;
}
// 기준 인덱스를 반환하는 메서드
public int getIndex(String key) {
switch (key) {
case "code": return 0;
case "date": return 1;
case "maximum": return 2;
case "remain": return 3;
default: return -1;
}
}
// 배열을 삽입 정렬하는 메서드
public void sortedArr(int[][] arr, int index) {
for (int i = 1; i < arr.length; i++) {
int[] target = arr[i];
int j = i - 1;
// 삽입 위치를 찾기 위해 배열 요소를 비교
while (j >= 0 && arr[j][index] > target[index]) {
arr[j + 1] = arr[j]; // 요소를 이동
j--;
}
arr[j + 1] = target; // 새로운 위치에 요소 삽입
}
}
}
728x90
'프로그래머스(Java) > Level 1' 카테고리의 다른 글
[프로그래머스] 개인정보 수집 유효기간 (0) | 2024.08.27 |
---|---|
[프로그래머스] 공원 산책 (0) | 2024.08.27 |
[프로그래머스] [PCCP 기출문제] 1번 / 붕대 감기 (0) | 2024.08.21 |
[프로그래머스] [1차] 다트 게임 (1) | 2024.08.20 |
[프로그래머스] 문자열 나누기 (0) | 2024.08.16 |