728x90
반응형
https://github.com/ROUTINE-STUDY/Algorithm
알고리즘 스터디를 진행하고 있습니다. 😊
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/250121
내 코드(JAVA)
// 데이터 객체
class Data {
int code;
int date;
int maximum;
int remain;
public Data(int code, int date, int maximum, int remain) {
this.code = code;
this.date = date;
this.maximum = maximum;
this.remain = remain;
}
// 어떠한 값으로 정렬할 지 판단하기 위한 메서드
public int getSortby(String sort_by) {
switch (sort_by) {
case "code":
return this.code;
case "date":
return this.date;
case "maximum":
return this.maximum;
default:
return this.remain;
}
}
}
// 배열의 index 값과 의미를 저장한 enum
enum DataSet {
CODE(0), DATE(1), MAXIMUM(2), REMAIN(3);
private final int value;
DataSet(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
public class Solution {
public int[][] solution(int[][] data, String ext, int val_ext, String sort_by) {
int value = DataSet.valueOf(ext.toUpperCase()).getValue(); // enum을 통해 기준이 배열의 몇 번째인지 확인
List<Data> list = new ArrayList<>();
for (int[] d : data) {
if (d[value] > val_ext) {
continue;
}
Data obj = new Data(d[0], d[1], d[2], d[3]);
list.add(obj);
}
list.sort((o1, o2) -> o1.getSortby(sort_by) - o2.getSortby(sort_by));
int[][] answer = new int[list.size()][4];
for (int i = 0; i < list.size(); i++) {
Data obj = list.get(i);
answer[i][0] = obj.code;
answer[i][1] = obj.date;
answer[i][2] = obj.maximum;
answer[i][3] = obj.remain;
}
return answer;
}
}
객체(Data)로 제어하면 조금 편할 것 같아 처음 떠오르는 방식으로 구현했습니다.
728x90
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스/JAVA] 붕대감기 (0) | 2024.04.09 |
---|---|
[LeetCode/JAVA] 20. Valid Parentheses (0) | 2023.12.03 |
[프로그래머스/JAVA] 숫자 짝꿍 (0) | 2023.11.16 |
[프로그래머스/JAVA] 크기가 작은 부분문자열 (1) | 2023.11.14 |
[프로그래머스/JAVA] 둘만의 암호 (1) | 2023.11.12 |
댓글