프로그래머스/Lv. 0(코딩테스트 입문)

[프로그래머스 코딩테스트] 배열 자르기(Java)

Sigfriede 2023. 3. 27. 15:51

  문제 설명

  정수 배열 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]
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;
        }
    }

  answer의 크기는 웬만해서는 딱 맞춰주고 싶지만 어떻게 맞춰줘야 할지 모르겠어서 우선 기준이 되는 numbers의 길이만큼 설정해주었습니다. 이렇게 설정해도 통과는 되더라구요. 이후 Arrays의 메소드인 copyOfRange를 통해 간단히 구현해보았습니다.

Arrays.copyOfRange(복사할 배열, 시작 위치, 종료 위치)

 

  종료 위치 이전까지의 값만 반환하므로 저는 풀이에서 + 1을 해주었습니다. 이제 생각해보니 num2에서 num1을 뺀 값에 1을 더해주면 answer에 딱 맞는 배열크기가 되었겠네요. 라고 생각했는데 다른 사람들의 풀이를 보니 배열크기 지정 없이 바로 풀어버리시는 분들도 있고…. 위의 풀이도 간단하지만 stream으로 푼 풀이도 종종 보이네요.