프로그래머스
프로그래머스 배열 자르기 문제풀이
애용이랑떼껄룩
2024. 2. 8. 10:25
728x90

문제 설명
정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.
제한 사항
- 2 ≤ numbers의 길이 ≤ 30
- 0 ≤ numbers의 원소 ≤ 1,000
- 0 ≤num1 < num2 < numbers의 길이
입출력 예
numbers | num1 | num2 | result |
[1, 2, 3, 4, 5] | 1 | 3 | [2, 3, 4] |
[1, 3, 5] | 1 | 2 | [3, 5] |
문제 풀이
public int[] solution1(int[] numbers, int num1, int num2) {
int[] answer = {};
answer = Arrays.copyOfRange(numbers, num1, num2+1);
return answer;
}
해당문제는 copyOfRange를 사용하여 풀었다.
copyOfRange는 (복사할배열, 복사할 시작 인덱스, 복사할 끝 인덱스) 로 인덱스는 0시작 기준이다.
위 문제의 예로 copyOfRange ([1, 2, 3, 4, 5], 1, 3) 을 하게되면 1 인덱스인 2부터 3 인덱스인 4까지 복사가 되는것이다.
다른 풀이
public int[] solution2(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;
}
다른풀이는 answer의 길이는 num2 - num1을 하는데 +1을 하는이유는 길이가 0부터 시작하기때문
for문의 길이는 num1부터 num2까지 돌고 answer[i -num]에서 첫번째 answer[0]을 셋팅해주기 위함이다.
태클은 환영!
반응형