✔ 프로그래머스 레벨 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);
댓글