관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[알고리즘] 프로그래머스 정렬 'K번째수' -정렬- 본문

알고리즘/문자열, 정렬

[알고리즘] 프로그래머스 정렬 'K번째수' -정렬-

막무가내막내 2019. 6. 27. 19:44
728x90
 public  int[] solution(int[] array, int[][] commands) {
        ArrayList<Integer> list = new ArrayList(); //실질적으로 데이터를 담고 사용할 리스트
        List<Integer> tmpList = new ArrayList<Integer>();
        int result[] = new int[commands.length]; //결과값은 commands의 첫번째 배열크기만큼이다.

        //초기 데이터 담기
        for (int v : array) {
            list.add(v);
        }
        for (int i = 0; i < commands.length; i++) { //결과값의 총 개수만큼 반복
            //규칙값 3개 받아옴
            int firstIndex = commands[i][0];
            int endIndex = commands[i][1];
            int findIndex = commands[i][2];
            tmpList.clear();
            // 1. 자르기
            tmpList.addAll(list);
            List<Integer> resutList =  tmpList.subList(firstIndex - 1, endIndex);
            // 2.정렬
            Collections.sort(resutList);
            // 3. c번쨰 숫자 뭔지 확인 및 결과배열 담기
            result[i] = resutList.get(findIndex - 1).intValue();
        }
        return result;
    }

 

문제는 쉬웠으나 한가지를 몰라서 시간이 좀더 걸리게되었다.. 

subList() 가 깊은복사가 아닌 얕은 복사가 된다는 점을 몰랐었다.

그래서 list의 subList()해서 tmpList에 처음에 받고 했었으나 tmpList를 정렬하면 list까지 정렬이 되어서 수정하였다.

 

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

 

코딩테스트 연습 - K번째수 | 프로그래머스

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

 

728x90
Comments