프로그래머스
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의 요소를 배열로 반환한다.