본문 바로가기
IT/JAVA

[프로그래머스] 정렬(Array)_1_K번째 수

by 행복한 용용이 2020. 12. 16.
반응형

프로그래머스의 정렬(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가 있었다니...

훨씬 간단하고 나처럼 초기화를 시키기 않아도 되서 효율적이다.

 

 

[출처] 빡쏘끼룩

반응형