알고리즘

[프로그래머스 lv 1] k번째 수.java

파뱁 2022. 4. 25. 23:03
728x90

<문제 설명>

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

배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 한다.

예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면

  1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]
  2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]
  3. 2에서 나온 배열의 3번째 숫자는 5

입출력의 예는 다음과 같다.

array commands return
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

 

<문제 풀이 아이디어>

주어진 명령(commands)를 하나씩 실행한다. 임의의 tmp 배열을 선언해서 반복문을 돌때 마다 거기에 자른 배열을 넣고 정렬한 뒤 원하는 순서의 값을 꺼내서 정답 배열에 추가한다.

 

<문제 풀이 코드>

import java.util.Arrays;
class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = {};
        int[] tmp;
        answer = new int[commands.length];
        for(int i = 0;i<commands.length;i++){
            tmp = new int[commands[i][1]-commands[i][0]+1];
            int a = commands[i][0];
            for(int j = 0;j<(commands[i][1]-commands[i][0]+1);j++){며
                tmp[j] = array[a-1];
                a++;
            }
            Arrays.sort(tmp);
            answer[i] = tmp[commands[i][2]-1];
        }
        return answer;
    }
}

채점 결과

728x90
반응형