[코테] K번째 수

코테

목록 보기
3/4

https://school.programmers.co.kr/learn/courses/30/lessons/42748

import java.util.*;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int commandLength = commands.length;
        int[] answer = new int[commandLength];
        for (int a = 0; a < commandLength; a++) {
            int i = commands[a][0];
            int j = commands[a][1];
            int k = commands[a][2];
            int n = slice(array,i,j,k);
            answer[a] = n;
        }
        

        return answer;
    }
    
    public int slice(int[] array, int i, int j, int k) {
        int result=0;
        int[] copyArr = Arrays.copyOfRange(array,i-1,j);
        Arrays.sort(copyArr);
        for (int b : copyArr) {
            result = copyArr[k-1];
        }

        
        return result;
    }
}

int[] 배열 복사할 때는 Arrays.copyOfRange사용
정렬할떄는 Arrays.sort사용한다.

역은

Integer[] tmp = Arrays.stream(intArray).boxed().toArray(Integer[]::new);
    Arrays.sort(tmp, Comparator.reverseOrder()); 

Integer로 감싸야 한다.

Integer를 int로 바꾸는 방법

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

Integer[] boxed = new Integer[arr.length];

for (int i = 0; i < arr.length; i++) {
  boxed[i] = arr[i]; // 자동으로 int → Integer
}

반대도 된다. 혹은

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

Integer[] boxed = Arrays.stream(arr)
                        .boxed()
                        .toArray(Integer[]::new);

0개의 댓글