K번째 수

이은미·2025년 7월 13일
0

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

문제 파악

•	정수 배열 array가 있음
•	commands는 [i, j, k] 형식으로 주어짐

→ array의 i번째부터 j번째까지 자르고
→ 정렬한 뒤
→ k번째 수를 리턴해야 해

👉 여러 명령이 있으니까 결과는 int[] 배열로 리턴해야 함

접근 방법

1.	commands 배열을 하나씩 순회
2.	각 명령마다
•	i-1 ~ j 범위로 array 자르기 (Java에선 Arrays.copyOfRange)
•	오름차순 정렬
•	k번째 값 꺼내기 (k-1번째 인덱스)
3.	결과 배열에 저장해서 리턴

코드 구현

import java.util.*;

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

    for (int i = 0; i < commands.length; i++) {
        int start = commands[i][0] - 1;  // 시작 인덱스
        int end = commands[i][1];        // 끝 인덱스 (exclusive)
        int k = commands[i][2] - 1;      // k번째 (인덱스는 -1)

        int[] sliced = Arrays.copyOfRange(array, start, end);
        Arrays.sort(sliced);
        answer[i] = sliced[k];
    }

    return answer;
}

}

profile
파이팅 해야지

0개의 댓글