티스토리 뷰

JAVA

알고리즘 연습 - K번째수 - JAVA

LoveApple 2019. 1. 3. 10:57


문제

문제 분석

commands 는 2차원 배열로 첫번째는 시작점, 두번째는 끝지점, 그리고 마지막 세번째는 자른배열안에서 K번째의 자리를 꺼내라 라는 의미를 갖고있습니다. 

여기서 commands[i][j] j가 0이면 시작점, 1이면 끝지점, 2이면 K번째 수 이처럼 정해져있으며, i가 계속해서 변하는 수 이기에 i를 계속해서 변화 시켜 주면 됩니다. 하지만 i가 가르키는 지점은 0번부터 시작하는 것이 아니고 1번부터 시작하기에 commands[i][0~2] -1을 통해 배열을 찾아갈 수 있도록 해줘야합니다. k번째도 똑같이 해주면됩니다.


코드

 프로그래머스

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.*;
class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        int[] arr2;
        for(int i=0;i<commands.length;i++){
            arr2 = Arrays.copyOfRange(array,commands[i][0]-1,commands[i][1]);
            Arrays.sort(arr2);
            answer[i] = arr2[commands[i][2]-1];
        }
        return answer;
    }
}
cs

Eclipse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static void main(String[] args) {
        int[] array = {1,4,5,2,3,6,7};
        int[][] commands = {{253}, {441}, {173}};
        int e=0,s=0,k=0,i=0;
        int[] arr2 = {};
        ArrayList<Integer>list = new ArrayList<Integer>();
        for(i=0;i<=2;i++){
            for(int j=0;j<=2;j++){
                s = commands[i][j];
                e = commands[i][j+1];
                k = commands[i][j+2];
                break;
            }
            arr2 = Arrays.copyOfRange(array,s-1,e);
            Arrays.sort(arr2);
            list.add(arr2[k-1]);
            
        }
        System.out.println(list);
        
    }
cs

Eclipse에서 작성한 코드와 같은 방법으로 진행해도 정상적으로 출력이 되지만, 각종 경고와 프로그래머스에서는 런타임오류가 뜬다....


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
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
글 보관함