728x90
반응형
SMALL
배열 안 특정 범위 내에서 정렬은 한 뒤 k 번째 수를 구하는 문제!
배열의 범위를 자르는 방법에 대해서 이것저것 쑤시고, commands 랑 같이 사용하려고 하다보니
for문이 4개나 중첩되어가고 있었다...
이건 나도 보기 어렵고 아무리 잘쳐줘도 정답은 아닌 것 같아 고민을 좀 하다 힌트(질문하기)를 사용했다
참고한 내용 중 commands에 나오는 시작번호, 끝번호, 선택 번호를 변수로 두고
배열과 함께 처리하는 메서드를 만들어서 처리하는 방법을 확인하고 문제를 해결하였다!
그리고 다른 사람들은 어떻게 풀었나 확인을 해보니
배열을 정렬하는 함수 Arrays.copyOfRange 를 사용하여 문제를 풀었드라....
Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
어쩐지 노가다 말고 더 좋은 방법이 있을 것 같았는데 이건 생각을 못했었다...
이런 함수들은 어떻게알고 사용하는걸까
외우는건지, 아니면 자주 풀다가 익혀지는건지
갈길이 멀다
정답
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
for(int i=0; i<commands.length; i++){
int start = commands[i][0];
int end = commands[i][1];
int select = commands[i][2];
answer[i] = result(start, end, select, array);
}
return answer;
}
public int result(int start, int end, int select, int[] array){
ArrayList<Integer> arr = new ArrayList<>();
for(int i=start-1; i<end; i++){
arr.add(array[i]);
}
Collections.sort(arr);
return arr.get(select-1);
}
}
출처
프로그래머스 - https://school.programmers.co.kr/learn/courses/30/lessons/42748
728x90
반응형
LIST
'코딩 테스트' 카테고리의 다른 글
프로그래머스) 약수의 개수와 덧셈 Lv1 (2) | 2024.02.06 |
---|---|
프로그래머스) 두 개 뽑아서 더하기 Lv1 (0) | 2024.02.06 |
프로그래머스) 기사단원의 무기 Lv1 (2) | 2024.02.05 |
프로그래머스) 대충 만든 자판 Lv1 (2) | 2024.02.04 |
프로그래머스) 명예의 전당(1) Lv1 (0) | 2024.02.04 |