Arrays.copyOfRange 이용하기
K번째수 : Level1
https://school.programmers.co.kr/learn/courses/30/lessons/42748
풀이 코드
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
for (int i = 0; i < commands.length; i++) {
int[] arr = new int[commands[i][1] - commands[i][0] + 1];
arr = Arrays.copyOfRange(array, commands[i][0] - 1, commands[i][1]);
Arrays.sort(arr);
answer[i] = arr[commands[i][2] - 1];
}
return answer;
}
}
ㄴ Arrays.copyOfRange 를 이용하여 배열을 자르도록 하였다.
ㄴ Arrays.sort 를 이용해 배열을 정렬하였다.
Arrays.copyOfRange 이용하기
새로운 배열 = Arrays.copyOfRange(원본 배열, 배열 시작 인덱스, 배열 끝 인덱스)
ㄴ 배열 시작 인덱스는 포함되지만 배열 끝 인덱스는 포함되지 않는다.
ex) arr = Arrays.copyOfRange(array, 1, 5); => arr = { 1, 2, 3, 4 }
다른 메서드 사용
System클래스의 arraycopy 메서드
ㄴ System 클래스에서 제공하는 arraycopy() 메소드를 활용하여 특정 위치부터 특정 개수만큼 새로운 배열에 값을 할당할 수 있다.
System.arraycopy(원본 배열, 원본 배열 시작 위치, 새로운 배열, 새로운 배열 시작 위치, 원본 배열에서 복사되는 데이터 개수);
코드 예제
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] newArr = new int[4];
System.arraycopy(array, 1, newArr, 0, 4);
System.out.println("array: " + Arrays.toString(array));
System.out.println("newArr: " + Arrays.toString(newArr));
실행 결과
array: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
newArr: [1, 2, 3, 4]
Arryas.copyOfRange 메서드에 대해 정리해두고자 포스팅하였다.
System.arraycopy 메서드는 처음 알게되어 정리해보았다.
'코딩테스트 > programming_JAVA' 카테고리의 다른 글
[Java] 프로그래머스_134240 : 푸드 파이트 대회 (0) | 2023.12.17 |
---|---|
[Java] 프로그래머스_17681 : [1차] 비밀지도 (0) | 2023.12.17 |
[Java] 프로그래머스_12915 : 문자열 내 마음대로 정렬하기 (0) | 2023.12.15 |
[Java] 프로그래머스_81301 : 숫자 문자열과 영단어 (0) | 2023.12.13 |
[Java] 프로그래머스_68935 : 3진법 뒤집기 (2) | 2023.12.05 |