문제
정수 배열 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( 복사할 배열, 복사할 배열의 크기);를 받는다.
이것을 활용해도 쉽게 풀 수 있다. 모르고 있던 메소드이다.
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 lv0 제곱수판별하기 (0) | 2023.02.22 |
|---|---|
| 프로그래머스 lv0 모음제거 (0) | 2023.02.22 |
| 프로그래머스 lv0 암호해독 (0) | 2023.02.21 |
| 프로그래머스 lv0 369게임 (0) | 2023.02.20 |
| 프로그래머스 lv0 문자열 뒤집기 (0) | 2023.02.20 |