K번째수
문제 분석
- 배열1과 2차원 배열인 배열2가 주어진다.
- 배열1의 i번째부터 j번째까지 수를 정렬하여 k번째 수를 반환해야 한다.
- 배열2는 [i, j, k]를 원소로 가진다.
- 배열2의 길이는 고정되어 있지 않다.
- 먼저 반환값으로 사용할 배열을 생성한다.
- 배열2의 길이는 고정되어 있지 않으므로 length로 모든 요소를 순회하는 for문을 생성한다.
- 배열1에서 자른 요소들을 담을 list를 생성하고 배열1의 ([i][0] - 1)번 인덱스부터 ([i][1] - 1)의 인덱스를 넣는다.
- list를 정렬하고, get 메서드를 통해 k번째 요소를 뽑아서 반환값 담을 배열에 넣는다.
🤔
배열의 일부를 자르고 이를 담아 둘 곳이 필요하다는 점에서 한참 고민했다. 다른 효율적인 방법을 고민해 보기!
문제 풀기
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] result = new int[commands.length]; // 반환값으로 사용할 배열 생성
// 2차원 배열 모두 순회
for (int i = 0; i < commands.length; i++) {
List<Integer> list = new ArrayList<>();
// array의 commands[i][0]부터 commands[i][1]까지 수들을 list에 저장
for (int j = commands[i][0]; j <= commands[i][1]; j++)
list.add(array[j - 1]);
Collections.sort(list);
result[i] = list.get(commands[i][2] - 1); // 인덱스는 0부터 시작하므로 -1
}
return result;
}
}
'Etc > Algorithm' 카테고리의 다른 글
[Algorithm] 그래프 탐색 - BFS / DFS (0) | 2022.11.19 |
---|---|
[Algorithm] 정렬 - Comparable과 Comparator (0) | 2022.10.18 |
[Java] 프로그래머스 : 위장 (0) | 2022.10.10 |
[Java] 프로그래머스 : 전화번호 목록 (0) | 2022.10.09 |
[Java] 백준 9935번: 문자열 폭발 (1) | 2022.10.08 |
댓글