본문 바로가기

코딩테스트

배열 자르기

아쉽게 틀렸다

 

반복문에서 numbers에 대한 부분이 틀렸음

다음에는 확실하게 생각해서 풀어봐야겠다

 

    public int[] solution(int[] numbers, int num1, int num2) { // 1, 3
        int[] answer = {};
        answer = new int[num2 - num1 + 1]; // 3 - 1 + 1 = 3

        for(int i = 0; i < num2-num1+1; i++) { // 0, 1, 2
            int number = numbers[num1+i]; // 1 + 0 - 1 = 0, numbers[0]을 가져오게 됨
            answer[i] = number;
        }
        return answer;
    }

 


Arrays.copyOfRange() 를 활용한 풀이법

import java.util.*;

class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {
        return Arrays.copyOfRange(numbers, num1, num2 + 1);
    }
}

 

copyOfRange에 대해

 

util 클래스에 들어있는 메서드

배열의 일부 구간을 잘라서 새로운 배열로 만들어준다

import java.util.*;

Arrays.copyOfRange(원본배열, 시작인덱스, 끝인덱스);

 

여기에서 중요한점은, 시작 인덱스는 포함하지만 끝 인덱스 번호는 포함하지 않는다는 것이다

가령

Arrays.copyOfRange(원본배열, 1, 3);

 

이 상태라면

1은 포함하고, 3은 포함하지 않는다

따라서 1,2에 해당하는 배열값만 가져온 후 새로운 배열로 만든다

 

 - 새로운 배열을 생성하고

 - 지정된 범위만큼 복사한다음

 -  새로운 배열을 만들고 집어넣는다

 

배열이 초과할경우, 0으로 채워넣는다

 

'코딩테스트' 카테고리의 다른 글

순서쌍의 개수  (0) 2026.05.21
진료순서 정하기  (0) 2026.05.19
문자 반복 출력하기  (0) 2026.04.22
짝수 홀수 개수  (0) 2026.04.22
문자열 뒤집기  (0) 2026.04.12