[Java] 배열에서 원하는 범위의 index 추출하기

2023. 8. 12. 11:30Programming/기술 정리

해당 방법은 프로그래머스의 K번째 수 문제에서 원하는 시작인덱스 ~ 원하는 종료인덱스까지의  배열을 추천하기 위해 공부했던 방법이다.

알고리즘으로 직접적으로 푸는 방법과, API를 사용하는 방법 두가지를 고민했는데

자바 자체에서 제공되는 메소드를 공부하기 위해 사용방법을 정리하였다.


[방법 1]

int[] arr1 = {1,2,3,4}
/* 
  복사하려는기존 arr, startIndex, EndIndex
  단, EndIndex - startIndex로 새로운 배열의 길이를 결정하므로, 해당 값이 꼭 0이상이어야한다.
  아니면 error를 뱉어낸다.
*/ 
int[] newArr = Arrays.copyOfRange(arr1,1,3);



[방법 2]

int[] arr1 = {1,2,3,4}
int[] arr2 = {10, 20, 30, 40, 50};

/* 
  기존 arr, 기존 arr에서 복사하려는 startIndex, 새로운 arr, 새로운 arr에서 복사시작 index(더하려는 시작 index), 기존의 복사 arr에서 복사길이

   즉, 기존 arr에서 복사하려는 startIndex 이 0이고,  기존의 복사 arr에서 복사길이가 3이면
   arr2의 1번 인덱스 지점에 기존 arr1의 0~2번 인덱스까지가 복사된다.

*/   
System.arraycopy(arr1, 0, arr2, 1, 3);  






+) 단, 기존 API를 사용하는 방법이 훨씬 간결하고 코드가 깔끔하기는 하지만 알고리즘으로 푸는 방법보다 무조건 속도가 빠르다는 뜻은 아니다. 대용량 데이터를 처리하여 사용할때는 속도를 비교해보고 사용해야할거 같다.