앞으로 매일 꾸준히 코딩테스트를 진행하면서 단계를 높여가보자.
정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.
2 ≤ numbers의 길이 ≤ 30
0 ≤ numbers의 원소 ≤ 1,000
0 ≤num1 < num2 < numbers의 길이

class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = new int[num2 - num1 +1];
// 반복문으로 주어진 범위에 해당하는 부분 배열 추출
for(int i = num1; i <= num2; i++) {
answer[i - num1] = numbers[i];
}
return answer;
}
}
배열에서 num1번째 인덱스부터 num2번째 인덱스까지의 부분 배열을 추출한다.
1) 범위의 부분 배열의 크기는 num2 - num1 + 1 이다.
2) 반복문을 돌면서
현재 인덱스 i에서 시작 인덱스 num1을 빼주어 새로운 배열의 인덱스를 계산한다. 이를 통해 부분 배열의 첫 번째 인덱스는 항상 0으로 시작하게 된다.
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = new int[num2 - num1 +1];
int index = 0;
// 반복문으로 주어진 범위에 해당하는 부분 배열 추출
for(int i = num1; i <= num2; i++) {
answer[index] = numbers[i];
index++;
}
return answer;
}
}
배열 인덱스를 변수 index로 설정하고, 반복문을 통해 인덱스를 증가시키면서 부분 배열의 각 요소를 저장한다.
그 외에는 위의 풀이와 동일하다.
import java.util.*;
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = new int[numbers.length};
answer = Arrays.copyOfRange(numbers, num1, num2 + 1);
return answer;
}
}
1) int 타입 배열 answer 변수를 numbers의 길이만큼 크기 지정한다.
2) Arrays.copyOfRange(복사할 배열, 복사 시작 인덱스, 배열 크기) 메서드를 사용하여 배열 복사한다.
메서드 형식 copyOfRange(int[] original, int from, int to)
java.util.Arrays 클래스
배열을 다루는 유용한 메서드들을 제공하는 유틸리티 클래스이다.
Arrays에 대해서 공부를 더 해보자 !