코딩테스트/Programmers

[프로그래머스] 무작위로 K개의 수 뽑기

grove1212 2025. 1. 23. 15:34

 

import java.util.stream.*;

class Solution {
    public int[] solution(int[] arr, int k) {
        int[] pickedArr = IntStream.range(0,arr.length)
            .map(i -> arr[i])
            .distinct()
            .limit(k)
            .toArray();
        
        int[] answer = IntStream.range(0, k)
            .map(i -> -1)
            .toArray();
        
        System.arraycopy(pickedArr, 0, answer, 0, pickedArr.length);
        
        return answer;
    }
}

 

다른 분의 멋진 풀이

분석을 해보자면,

Array를 바로 스트림으로 바꿀 수 있다.

- Arrays.stream(arr)을 통해 stream으로 바꾸고, limit를 통해 k개까지 제한한다.

import java.util.Arrays;
import java.util.stream.IntStream;

class Solution {
    public int[] solution(int[] arr, int k) {
        return IntStream.concat(Arrays.stream(arr).distinct(), IntStream.range(0, k).map(i -> -1))
        .limit(k)
        .toArray();
    }
}