https://programmers.co.kr/learn/courses/30/parts/12198
문제
이해
commands 를 통해 [ start, end, K ] 가 들어온다.
command에 start, end 길이만큼 배열을 자른다.
자른 배열을 오름차순으로 기본 정렬한 후,
K번째 수를 정답 배열에 저장
포인트
여기서 포인트는 , 반복하면서 주어진 배열을 자르는 방법이다.
자바에서 배열의 범위만큼 자르는 메소드로 쓰기 좋은것이 copyOfRange(Array, int startIndex, int LastIndex)이다
이를 활용해주면 , 주어진 배열은 Arrays.sort() 후 쉽게 정답을 구해줄 수 있다.
풀이
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int answer[] = new int[commands.length];
for(int i = 0 ; i<commands.length; i++) {
int [] arr = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
Arrays.sort(arr);
answer[i] = arr[commands[i][2]-1];
}
return answer;
}
}
레벨 1 다운 간단한 문제입니다만, 포인트가 되는 메소드를 모른다면, 코드가 길어질수 있으니,
배열을 SubRange로 잘라서 사용가능하게 해주는 Arrays.copyOfRange() 메소드를 꼭 기억하자
'Algorithm > 프로그래머스 고득점 Kit' 카테고리의 다른 글
[정렬] H-Index - Java 풀이 (0) | 2021.07.24 |
---|---|
[정렬] 가장 큰 수 - Java 풀이 (0) | 2021.07.24 |
[Hash] 베스트 앨범 - Java 풀이★★★ (0) | 2021.06.17 |
[Hash] 위장 - Java 풀이 (0) | 2021.06.16 |
[Hash] 전화번호 목록 - Java 풀이 (0) | 2021.06.16 |