제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
Programmers 알고리즘 고득점 Kit입니다.
포인트
배열의 서브 어레이를 구하는 것이 포인트였다고 생각합니다. 이를 위해 자바의 copyOfRange() 함수를 이용합니다.
소스코드
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
List<Integer> answerList = new ArrayList<>();
for (int[] command: commands) {
int i = command[0] - 1;
int j = command[1];
int k = command[2] - 1;
int[] subArray = Arrays.copyOfRange(array, i, j);
Arrays.sort(subArray);
answerList.add(subArray[k]);
}
return answerList.stream().mapToInt(Integer::intValue).toArray();
}
}
코드 설명
- List<Integer> answerList = new ArrayList<>();
정수형 요소를 저장할 수 있는 ArrayList 객체 answerList를 생성합니다.
이 리스트는 각 명령(commands)에 따라 추출된 결과값들을 저장하는 역할을 합니다. - int[] subArray = Arrays.copyOfRange(array, i, j); Arrays.sort(subArray);
array의 i부터 j (종료 인덱스는 포함되지 않음)까지의 부분 배열을 subArray에 복사하고, 이를 오름차순으로 정렬합니다.
- copyOfRange(array, i, j)는 array 배열을 i부터 j-1까지 배열을 생성합니다.
- answerList.add(subArray[k]);
정렬된 subArray에서 k번째 요소를 가져와 answerList에 추가합니다. - return answerList.stream().mapToInt(Integer::intValue).toArray();
결과 값을 int[] 배열로 변환 후 반환합니다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[코딩테스트] Java H-Index (3) | 2024.11.12 |
---|---|
[코딩테스트] Java 가장 큰 수 (1) | 2024.11.12 |
[코딩테스트] Java 이중 우선순위 큐 (6) | 2024.11.11 |
[코딩테스트] Java 디스크 컨트롤러 (0) | 2024.11.11 |
[코딩테스트] Java 더 맵게 (0) | 2024.11.11 |