[lv.1] K번째수

RTUnu12·2024년 2월 21일
0

Programmers

목록 보기
15/41

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

  • 문제
    i와 j사이에서 K번째 수를 구해라.

  • 풀이
    너무 간단해서 적지는 않겠다. 하지만 다른 사람의 풀이를 보니 Arrays.copyOfRange(arr, i, j)라는 획기적인 함수가 있단 것을 깨달았다.

  • 코드 (원래)

import java.util.*;

class Solution {
    public ArrayList<Integer> solution(int[] arr, int[][] cmd) {
        ArrayList<Integer> list = new ArrayList<>();
        for(int i=0; i<cmd.length; i++){
            int start = cmd[i][0]-1;
            int end = cmd[i][1];
            int cur = cmd[i][2]-1;
            int[] newArr = new int[end-start];
            int idx = 0;
            for(int j=start; j<end; j++){
                newArr[idx++] = arr[j];
            }
            Arrays.sort(newArr);
            list.add(newArr[cur]);
        }
        return list;
    }
}
  • 코드 (Arrays.copyOfRange())
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++){
            int[] temp = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
            Arrays.sort(temp);
            answer[i] = temp[commands[i][2]-1];
        }

        return answer;
    }
}
profile
이제 나도 현실에 부딪힐 것이다.

0개의 댓글