본문 바로가기
Algorithm/프로그래머스

[프로그래머스]정렬 : K번째수 (level 1)

by HBGB 2019. 11. 4.

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

 

방법 1

\
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 iStart = commands[i][0];
            int iEnd = commands[i][1];
            int[] temp = new int[iEnd - iStart + 1];
            int iIndex = 0;
 
            // iStart 번째부터 iEnd 번째까지 자르기
            for (int j = iStart - 1; j < iEnd; j++) {
                temp[iIndex++= array[j];
                System.out.println(array[j]);
            }
 
            // 정렬
            Arrays.sort(temp);
 
            // k번째에 있는 수
            answer[i] = temp[commands[i][2- 1];
        }
 
        return answer;
    }
}
Colored by Color Scripter

 

방법 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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++) {
            
            // iStart 번째부터 iEnd 번째까지 자르기
            int[] temp = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
            
            // 정렬
            Arrays.sort(temp);
            
            // k번째에 있는 수
            answer[i] = temp[commands[i][2- 1];
        }
        
        return answer;
    }
}
Colored by Color Scripter

 

 

간단한 정렬문제 

Arrays.copyOfRange( array, START , END );

를 쓰면 코드가 훨씬 간결해지지만, 빨리 돌지는 않는다.

댓글