알고리즘(Algorithm)/프로그래머스(Programmers)

[프로그래머스] K번째수 - JAVA

나아가는중 2021. 10. 22. 23:06
반응형

프로그래머스 K번째수 - JAVA


문제 설명

  1. 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 떄, k번째에 있는 수를 구하려 한다.
  2. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어진다.
  3. commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을때 나온 결과를 배열에 담어 return.

제한 사항

  1. array의 길이는 1 이상 100 이하입니다.
  2. array의 각 원소는 1 이상 100 이하입니다.
  3. commands의 길이는 1 이상 50 이하입니다.
  4. commands의 각 원소는 길이가 3입니다.

문제 풀이

  1. commands 배열 길이와 나온 결과 길이가 같음으로 commands 배열 길이만큼 answer 배열 생성.
  2. commands 배열을 순화하며 i에서 j번째까지 수를 temp 배열에 복사하여 저장.
    • Arrays.copyOfRange() 함수를 사용하면 쉽게 범위를 지정하여 복사 할 수 있음.
  3. temp 배열을 정렬하고 k번째 수를 answer에 저장.

소스 코드

import java.util.*;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        int index = 0;

        for (int[] command : commands) {
            int i = command[0];
            int j = command[1];
            int k = command[2];

            int[] temp = Arrays.copyOfRange(array, i - 1, j);

            Arrays.sort(temp);

            answer[index++] = temp[k - 1];
        }

        return answer;
    }
}
반응형