happy coding

[java] Lv.0 배열 자르기 본문

coding study/programmars

[java] Lv.0 배열 자르기

yeoonii 2023. 8. 15. 15:57

정수형 배열을 자르는 방법은 배열의 일부분을 새로운 배열로 만드는 것을 의미하는데, 여기에는 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