본문 바로가기

Algorithm/프로그래머스

프로그래머스 level1 문제 : K번째수(java)

반응형
public int[] get_K_count(int[] array, int[][] commands) {
// 정렬(올림차순) : Array.sort(arr);
// 정렬(내림차순) : Array.sort(arr, Collections.reverseOrder());

Ascending ascending = new Ascending();
ArrayList<Integer> arrayList = getArrayList(array);
ArrayList<Integer> cutList = null;
ArrayList<Integer> resultList = new ArrayList<>();

for(int i=0; i<commands.length; i++) {
// 배열은 0부터 시작하니 "-1"을 해줌
int first = commands[i][0]-1;
int second = commands[i][1]-1;
int third = commands[i][2]-1;

cutList = new ArrayList<>();
if(first != second) {
for(int j=first; j<=second; j++) {
cutList.add(arrayList.get(j));
}
} else {
cutList.add(arrayList.get(first));
}

Collections.sort(cutList, ascending);
resultList.add(cutList.get(third));
}

int[] answer = new int[resultList.size()];
for(int i=0; i<answer.length; i++) {
answer[i] = resultList.get(i);
}

return answer;
}

private ArrayList<Integer> getArrayList(int[] array) {
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i=0; i<array.length; i++) {
arrayList.add(array[i]);
}
return arrayList;
}

// 오름차순
class Ascending implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
}

이렇게 풀었습니다.


다른 좋은 풀이방법이 있으신분은 댓글 부탁드려요!


너무 허접하게 풀었지만 문제 자체는 어렵지 않았네요..

반응형