안녕하세요 호호만두에요
이번에는 프로그래머스 level 1 k번째수 정렬 문제를 풀어보았어요
이 문제는 level 1 이기에 어렵지는 않아요
간단하게 이 문제는 배열을 인덱스로 잘라서 sorting 한 다음에 k번째 수를 구하는 문제에요
그래서 저는 문제 그대로 i부터 j까지 순회하며 값을 골라서 따로 배열에 넣었어요
그리고 sorting을 통해 k-1 번째 값은 return 해주는 방식으로 코딩했습니다.
https://github.com/wlgh325/Programmers_algorithm/tree/master/Level1/K%EB%B2%88%EC%A7%B8%EC%88%98
<프로그래머스 k번째수 자바 풀이>
import java.util.Arrays;
class Solution{
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
// 자른 배열
for (int i = 0; i < answer.length; i++) {
int[] temp = new int[commands[i][1] - commands[i][0] + 1];
for (int j = commands[i][0] - 1, k=0 ; j < commands[i][1]; j++, k++) {
temp[k] = array[j];
}
// sorting
Arrays.sort(temp);
answer[i] = temp[commands[i][2] - 1];
}
return answer;
}
}
저는 위 처럼 문제 그대로 풀었지만 알고보니까 더 쉽게 푸는 방법이 있더라구요
바로 배열을 범위로 자르는 Arrays.copyOfRange()에요
저는 이 문제를 보고 아 파이썬이면 진짜 간단할텐데 생각했는데
자바에도 이와 비슷한 메소드를 가지고 있는줄 처음 알았어요
이렇게 차근차근 level 1 부터 풀어가면서 하나씩 배워갑니다!!