[programmers] K번째 수

김우진·2026년 3월 5일

CodingTest

목록 보기
1/1
post-thumbnail

[Java] 코테 필수 라이브러리 정리 - Arrays

Java Arrays 라이브러리 사용법

📌 Arrays 클래스란?

java.util.Arrays에 포함된 클래스로, 배열을 다루는 유틸리티 메서드들을 제공한다.
C에서 직접 구현하던 것들을 한 줄로 처리할 수 있다.

import java.util.Arrays;

✂️ Arrays.copyOfRange() — 배열 자르기

배열의 일부를 잘라서 새 배열로 복사한다.

Arrays.copyOfRange(원본배열, 시작인덱스, 끝인덱스)

⚠️ 끝인덱스는 포함되지 않는다 (exclusive)

예시

int[] arr = {1, 2, 3, 4, 5};

int[] result = Arrays.copyOfRange(arr, 1, 4);
// → {2, 3, 4}   (index 1 이상, index 4 미만)

코테 적용 포인트

문제가 1-indexed 기준일 때, Java는 0-indexed라서 시작값에 -1 해줘야 한다.
끝값은 exclusive이기 때문에 -1 없이 그대로 넣으면 딱 맞게 잘린다.

// commands[i] = [2, 5, 3] 이면
int[] temp = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
//                                     2-1 = 1부터       5 미만까지 → index 1~4

🔃 Arrays.sort() — 배열 정렬

배열을 오름차순으로 정렬한다.

int[] arr = {3, 1, 4, 1, 5};
Arrays.sort(arr);
// → {1, 1, 3, 4, 5}

내림차순 정렬

기본 int[]로는 내림차순 직접 지정이 안 되고, Integer[]로 바꿔야 한다.

Integer[] arr = {3, 1, 4, 1, 5};
Arrays.sort(arr, (a, b) -> b - a);
// → {5, 4, 3, 1, 1}

일부 범위만 정렬

int[] arr = {5, 3, 1, 4, 2};
Arrays.sort(arr, 1, 4);  // index 1 이상, 4 미만만 정렬
// → {5, 1, 3, 4, 2}

🧩 실전 예제 — 프로그래머스 "K번째 수"

문제 요약

배열에서 i번째부터 j번째까지 자르고, 정렬 후 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 < commands.length; i++) {
            // 1. i번째 ~ j번째 자르기 (1-indexed → 0-indexed 변환)
            int[] temp = Arrays.copyOfRange(array, commands[i][0] - 1, commands[i][1]);

            // 2. 오름차순 정렬
            Arrays.sort(temp);

            // 3. k번째 수 저장 (1-indexed → 0-indexed 변환)
            answer[i] = temp[commands[i][2] - 1];
        }

        return answer;
    }
}

흐름 시각화

array    = [1, 5, 2, 6, 3, 7, 4]
command  = [2, 5, 3]

1. copyOfRange(array, 1, 5)  →  temp = [5, 2, 6, 3]
2. sort(temp)                →  temp = [2, 3, 5, 6]
3. temp[2]                   →  answer = 5

📚 Arrays 주요 메서드 요약

메서드설명
Arrays.sort(arr)오름차순 정렬
Arrays.sort(arr, from, to)범위 지정 정렬
Arrays.sort(arr, (a,b) -> b-a)내림차순 정렬 (Integer[] 필요)
Arrays.copyOfRange(arr, from, to)배열 범위 복사
Arrays.copyOf(arr, newLength)배열 복사 (길이 지정)
Arrays.fill(arr, value)배열 특정 값으로 초기화
Arrays.equals(arr1, arr2)두 배열 동등 비교
Arrays.toString(arr)배열 출력용 문자열 변환

0개의 댓글