본문 바로가기
코딩테스트/프로그래머스

JAVA - Arrays.copyOfRange() / 프로그래머스 lv1 - K번째 수

by 개발김쿙 2023. 11. 10.

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42748

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제의 핵심은

1. i번째 수부터 j번째 수까지 부분배열을 구할 것

2. 배열내에서 k번째 수를 구할 것

 

1. Arrays.copyOfRange() 

// 예시
int[] arr = {1,2,3,4};

// arr 배열을 i번째 수부터 j번째 수까지 자른다.
int[] arr1 = Arrays.copyOfRange(arr, i-1, j);

 

 

풀이 

import java.util.Arrays;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        // commands[]{i,j, k}  i~j 까지 자르고 정렬 후 k번째수 
        // 정답배열 선언 길이 commands.length
        int[] answer = new int[commands.length];
        
        // 1. for(commands)
        // 2. array의 {i,j,k} 구하기 
        for(int x=0; x<commands.length; x++){
            // array 의 부분 배열
            int[] parts = Arrays.copyOfRange(
                array, commands[x][0]-1, commands[x][1]);
            
            Arrays.sort(parts);
            
            answer[x] = parts[commands[x][2]-1];
        }
        
        return answer;
    }
}