프로그래머스

프로그래머스 배열 자르기 문제풀이

애용이랑떼껄룩 2024. 2. 8. 10:25
728x90

문제 설명

정수 배열 numbers와 정수 num1num2가 매개변수로 주어질 때, 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]을 셋팅해주기 위함이다.

 

태클은 환영!

 

 

반응형