티스토리 뷰
문제
문제 분석
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 = {{2, 5, 3}, {4, 4, 1}, {1, 7, 3}}; 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에서 작성한 코드와 같은 방법으로 진행해도 정상적으로 출력이 되지만, 각종 경고와 프로그래머스에서는 런타임오류가 뜬다....
'JAVA' 카테고리의 다른 글
알고리즘 연습 - 약수의 합 - JAVA (0) | 2019.01.08 |
---|---|
알고리즘 연습 - 완주하지 못한 선수 - JAVA (0) | 2019.01.05 |
알고리즘 연습 - 문자열 내 마음대로 정렬하기 - JAVA (0) | 2019.01.04 |
알고리즘 연습 - 같은 숫자는 싫어 - JAVA (0) | 2018.12.29 |
JAVA String Class Method (0) | 2018.09.11 |