[Programmers/ 코딩테스트 연습] 배열자르기 여러 방법 Java (for loop, copyOfRange, IntStream.rangeClosed)

2022. 12. 2. 08:57IT/Programmers

728x90
반응형

배열자르기 (Java)

class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {
        int[] answer = new int[num2 - num1 + 1];
        int cnt = 0;
        
        for (int i = num1; i <= num2; i++) {
            answer[cnt] = numbers[i];
            cnt++;
        }
        return answer;
    }
}

for loop 이용한 방법

 

import java.util.*;

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

Arrays에 numbers의 num1부터 num2까지 범위를 copyOfRange로 복사.

#배열복사 #배열인덱스복사 #copyOfRange

 

 

import java.util.stream.IntStream;

class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {
    
        return IntStream.rangeClosed(num1, num2).map(i -> numbers[i]).toArray();
    }
}

 

#IntStream 은 int 배열을 반환하는구나..

아 .toArray()가 있어서 배열 반환이고..

InStream.rangeClosed (num1, num2) : num1부터 num2까지의 범위

.map(  i -> numbers[i])

i를 numbers[i]로 반환하는데, 이 때 범위가 num1~num2가 되는거구나!

#rangeClosed 

728x90
반응형