문제 풀이/프로그래머스

프로그래머스 lv0 배열자르기

춘핑이 2023. 2. 21. 16:51

문제

정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때,
numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수
배열을 return 하도록 solution 함수를 완성해보세요.

코드풀이

public class 배열자르기 {
    public int[] solution(int[] numbers, int num1, int num2) {
        int[] answer = new int[num2 - num1 + 1];
        System.arraycopy(numbers, num1, answer, 0, num2 - num1 + 1);
        return answer;
    }
}

이전 강의에서 배운 arraycopy메소드를 사용하였다.
System.arraycopy(원본배열, 원본배열 복사 시작인덱스, 새배열, 새배열 붙여넣기 사직인덱스, 복사 항목 수);
두 배열과 인덱스만 넣으면되서 사용하기 편리하다.
배열 크기를 처음 고민했는데 인덱스0부터 시작한다느 점을 착안해서 마지막인덱스 - 시작인덱스 + 1 을해서 크기를 구해줬다.
2번부터 3번까지라면 2 3 / 3 - 2 + 1 2개

다른풀이

Arrays클래스의 copyOf 메서드이다. 이 메소드는 배열을 복사할 수 있게 해준다.
Arrays.copyOf( 복사할 배열, 복사할 배열의 크기);를 받는다.
이것을 활용해도 쉽게 풀 수 있다. 모르고 있던 메소드이다.