제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
Programmers 알고리즘 고득점 Kit입니다.

포인트

배열의 서브 어레이를 구하는 것이 포인트였다고 생각합니다. 이를 위해 자바의 copyOfRange() 함수를 이용합니다.

소스코드

import java.util.*;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        List<Integer> answerList = new ArrayList<>();
        
        for (int[] command: commands) {
            int i = command[0] - 1;
            int j = command[1];
            int k = command[2] - 1;
            int[] subArray = Arrays.copyOfRange(array, i, j);
            Arrays.sort(subArray);
            answerList.add(subArray[k]);
        }
        
        return answerList.stream().mapToInt(Integer::intValue).toArray();
    }
}

코드 설명

  • List<Integer> answerList = new ArrayList<>();
    정수형 요소를 저장할 수 있는 ArrayList 객체 answerList를 생성합니다.
    이 리스트는 각 명령(commands)에 따라 추출된 결과값들을 저장하는 역할을 합니다.
  • int[] subArray = Arrays.copyOfRange(array, i, j); Arrays.sort(subArray);
    array의 i부터 j (종료 인덱스는 포함되지 않음)까지의 부분 배열을 subArray에 복사하고, 이를 오름차순으로 정렬합니다.
    • copyOfRange(array, i, j)는 array 배열을 i부터 j-1까지 배열을 생성합니다.
  • answerList.add(subArray[k]);
    정렬된 subArray에서 k번째 요소를 가져와 answerList에 추가합니다.
  • return answerList.stream().mapToInt(Integer::intValue).toArray();
    결과 값을 int[] 배열로 변환 후 반환합니다.

+ Recent posts