728x90
<문제 설명>
https://programmers.co.kr/learn/courses/30/lessons/42748
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 한다.
예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면
- array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]
- 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]
- 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
반응형
'알고리즘' 카테고리의 다른 글
[백준 실버3] N과 M(2).py (0) | 2022.04.29 |
---|---|
[프로그래머스 lv2] 조이스틱.py (0) | 2022.04.27 |
[프로그래머스 lv 3] 이중우선순위큐.java (0) | 2022.04.20 |
[프로그래머스 lv 2] 더 맵게.java (0) | 2022.04.14 |
[프로그래머스 lv 2] 프린터.py (0) | 2022.04.13 |