프로그래머스의 정렬(Array)의 첫번째 문제
K번째 수
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, K번째 수를 구해야한다.
package programmkit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/* K번째 수
* 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, K번째 수
* */
public class Array_1 {
public static void main(String[] args) {
int array[] = {1, 5, 2, 6, 3, 7, 4};
int commands[][] = {{2,5,3},{4,4,1},{1,7,3}};
int answer[] = solution(array, commands);
for(int x=0; x<answer.length; x++) {
System.out.println(answer[x]);
}
}
private static int[] solution(int[] array, int[][] commands) {
int[] newarray = new int[array.length];
//1526374
for(int x=0;x<newarray.length; x++) {
newarray[x] = array[x];
}
int answer[] = new int[commands.length];
int y=0;
for(int x=0; x<commands.length; x++) {
Arrays.sort(array, commands[x][0]-1, commands[x][1]);
y= commands[x][0] + commands[x][2]-2;
answer[x] = array[y];
for(int z=0; z<array.length; z++) {
array[z] = newarray[z];
}
}
return answer;
/*
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;
*/
}
}
1. 나는 새로운 임시 Array인 newarray[]를 만들어 원래 처음의 array를 저장해 놓았다.
2. 그 후 array[]를 i번째 숫자부터 j번째 숫자까지 Arrays.sort를 이용하여 정렬!
3. k번째 수를 찾는다.
4. 처음의 array 형태인 newarray를 사용해 초기화~
P.S
주석처리 해놓은 코드는 다른 분이 쓰신 코드!
Arrays.copyOfRange가 있었다니...
훨씬 간단하고 나처럼 초기화를 시키기 않아도 되서 효율적이다.
[출처] 빡쏘끼룩
'IT > JAVA' 카테고리의 다른 글
[프로그래머스] 정렬(Array)_3_H-Index (0) | 2020.12.18 |
---|---|
[프로그래머스] 정렬(Array)_2_가장 큰 수 (0) | 2020.12.17 |
[Java] JDBC 연결 순서 완벽정리 (0) | 2020.12.15 |
[Java] Thread (0) | 2020.12.14 |
[Java] I/O 3(입출력) (java.io) - NotePad 만들기 (0) | 2020.11.13 |