본문 바로가기
  • 오늘도 한걸음
코딩문제

[JAVA] 배열을 자르는 방법

by 우쵸 2021. 11. 28.

 

 ✔ 프로그래머스 레벨 1 : K번째수 (42748) 
 ✔ 문제유형 : 완전탐색
 ✔ 참고출처 : https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Arrays.html
 ✔ 참고출처 : https://hianna.tistory.com/619
 ✔ 개인적으로 공부하면서 정리해나가고 있습니다. 맞지 않은 내용이 있을 수 있습니다.
 ✔ 맞지 않는 내용을 계속 고쳐나갈 수 있도록 하겠습니다.

 

 

어떤 배열이 다음과 같을 때,

int[] array = {1, 5, 2, 6, 3, 7, 4};

 

 

이 배열에서 두번째 수부터 다섯번째 수까지만 잘라서 활용하고 싶다면 어떻게 할까?

다음과 같은 배열을 만드는 방법을 알아보자.

int[] new_array = {5, 2, 6, 3};

 

 

[ 방법 1 ]

배열을 반복문으로 복사한다

새로운 배열을 만들고 배열을 복사하면서 원하는 인덱스를 지정해주면 된다.

 

// i:시작번째, j:마지막번째
// i-1:시작인덱스, j-1:마지막인덱스

int length = j-i+1;  // 배열의 길이
int[] new_array = new int[length];

for(int index=i-1; index<j; index++) {  
	new_array[index-(i-1)] = array[index];
}

 

[ 방법 2 ]

Arrays.copyOfRange 메소드 활용한다

API의 설명은 다음과 같다.

copyOfRange​(int[] original, int from, int to)
Copies the specified range of the specified array into a new array.
//특정 배열의 특정 범위를 새로운 배열로 복사한다

copyOfRange​(int[] original, int from, int to)

 

파라미터로 원본 배열, 시작인덱스, 마지막인덱스를 순서대로 받아서 동작하고

원본 배열의 타입은 자료형 모두 가능하다. <T> T[] 타입도 지원한다.

  

// i:시작번째, j:마지막번째
// i-1:시작인덱스, j-1:마지막인덱스
new_array = Arrays.copyOfRange(array, i-1, j);

 

 

댓글