아쉽게 틀렸다
반복문에서 numbers에 대한 부분이 틀렸음
다음에는 확실하게 생각해서 풀어봐야겠다
public int[] solution(int[] numbers, int num1, int num2) { // 1, 3
int[] answer = {};
answer = new int[num2 - num1 + 1]; // 3 - 1 + 1 = 3
for(int i = 0; i < num2-num1+1; i++) { // 0, 1, 2
int number = numbers[num1+i]; // 1 + 0 - 1 = 0, numbers[0]을 가져오게 됨
answer[i] = number;
}
return answer;
}
Arrays.copyOfRange() 를 활용한 풀이법
import java.util.*;
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
return Arrays.copyOfRange(numbers, num1, num2 + 1);
}
}
copyOfRange에 대해
util 클래스에 들어있는 메서드
배열의 일부 구간을 잘라서 새로운 배열로 만들어준다
import java.util.*;
Arrays.copyOfRange(원본배열, 시작인덱스, 끝인덱스);
여기에서 중요한점은, 시작 인덱스는 포함하지만 끝 인덱스 번호는 포함하지 않는다는 것이다
가령
Arrays.copyOfRange(원본배열, 1, 3);
이 상태라면
1은 포함하고, 3은 포함하지 않는다
따라서 1,2에 해당하는 배열값만 가져온 후 새로운 배열로 만든다
- 새로운 배열을 생성하고
- 지정된 범위만큼 복사한다음
- 새로운 배열을 만들고 집어넣는다
배열이 초과할경우, 0으로 채워넣는다