happy coding
[java] Lv.0 배열 자르기 본문
정수형 배열을 자르는 방법은 배열의 일부분을 새로운 배열로 만드는 것을 의미하는데, 여기에는 2가지 방법이 있다.
1. 반복문을 통한 배열 복사 :
public class ArraySlicingExample {
public static void main(String[] args) {
int[] originalArray = {1, 2, 3, 4, 5};
int startIndex = 1;
int endIndex = 3; // endIndex는 자를 범위에 포함되지 않음
int newSize = endIndex - startIndex;
int[] slicedArray = new int[newSize];
for (int i = startIndex, j = 0; i < endIndex; i++, j++) {
slicedArray[j] = originalArray[i];
}
for (int num : slicedArray) {
System.out.print(num + " ");
}
}
}
2. Arrays.copyOfRange() 사용
import java.util.Arrays;
public class ArraySlicingExample {
public static void main(String[] args) {
int[] originalArray = {1, 2, 3, 4, 5};
int startIndex = 1;
int endIndex = 3; // endIndex는 자를 범위에 포함되지 않음
int[] slicedArray = Arrays.copyOfRange(originalArray, startIndex, endIndex);
for (int num : slicedArray) {
System.out.print(num + " ");
}
}
}
프로그래머스 문제에 대해 내가 작성한 코드는 아래와 같다.
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int newSize = num2 - num1;
int[] slicedArray = new int[newSize];
for (int i = num1, j = 0; i < num2; i++, j++) {
slicedArray[j] = numbers[i];
}
return slicedArray;
}
}
그리고 정답이 아니어서 찾아낸 정답 코드는 아래와 같다.
import java.util.Arrays;
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;
}
}
훨씬 간결하고 효율있어 보인다.
코드를 분석해보면,
첫 코드는 newSize 변수를 사용하여 새로운 배열의 크기를 계산하고, 반복문을 사용하여 num1 부터 num2-1 까지의 요소를 잘라내어 slicedArray에 저장한다.
두번째 코드는 Arrays.copyOfRange() 메서드를 사용하여 배열의 특정 범위를 새로운 배열로 복사한다. 그리고 num1부터 num2 까지의 요소를 복사한다.
'coding study > programmars' 카테고리의 다른 글
[level 0] 옹알이(1) (1) | 2024.04.13 |
---|---|
[level 1] 세균 증식 (0) | 2024.03.30 |
[java] Lv.0 피자 나눠 먹기(1) (0) | 2023.08.14 |
[java] Lv.0 배열 뒤집기 (0) | 2023.08.14 |
[java] Lv.0 편지 (0) | 2023.08.14 |
Comments