프로그래머스

Lv0 무작위로 K개의 수 뽑기

illho 2025. 6. 25. 23:04

 

문제 요약

랜덤으로 서로 다른 k개의 수를 저장한 배열을 만드려고 한다.

지금까지 나온적이 없는 수이면 배열 맨 뒤에 추가하는 방식으로 만든다.

정수 배열 arr가 주어진다. 무작위의 수는 arr에 저장된 순서대로 주어질 예정

완성된 배열의 길이가 k보다 작으면 나머지 값을 전부 -1로 채워서 return 한다.

 

입출력 예

arr k result
[0,1,1,2,2,3] 3 [0,1,2]
[0,1,1,1,1] 4 [0,1,-1,-1]

 

문제풀이

import java.util.*;
class Solution {
    public int[] solution(int[] arr, int k) {
        int[] answer = new int[k];
        
        int[] uniqueArr = Arrays.stream(arr)
                            .distinct()
                            .toArray();
        
        for(int i=0; i<k; i++){
            if(i < uniqueArr.length){
             answer[i] = uniqueArr[i];   
            }else{
             answer[i] = -1;   
            }
        }
        
        
        return answer;
    }
}

 

 

자바 8의 stream의 distinct() 메서드를 활용해서 중복을 제거 할 수 있다.

toArray()를 통해 stream의 요소를 배열로 반환한다.