[알고리즘문제풀기] 무작위로 K개의 수 뽑기

silver's avatar
Oct 07, 2025
[알고리즘문제풀기] 무작위로 K개의 수 뽑기

문제

내가 작성한 정답

import java.util.*; class Solution { public int[] solution(int[] arr, int k) { int[] answer = new int[k]; Arrays.fill(answer,-1); Set<Integer> set = new HashSet<>(); int idx = 0; for(int i:arr){ if(set.add(i) && idx <k ){ answer[idx++] = i; } } return answer; } }

다른 사람들의 정답

import java.util.Arrays; import java.util.stream.IntStream; class Solution { public int[] solution(int[] arr, int k) { // 1. arr의 중복 제거된 고유 값들만 추출 (순서 유지) // [0,1,1,2,2,3] → [0,1,2] IntStream distinctArr = Arrays.stream(arr).distinct(); // 2. k개 크기의 -1 배열 생성 // IntStream.range(0, k) → [0,1,2,3] // .map(i -> -1) → [-1,-1,-1,-1] IntStream negatives = IntStream.range(0, k).map(i -> -1); // 3. 두 스트림 합치기: distinct + (-1들) // [0,1,2] + [-1,-1,-1] → [0,1,2,-1,-1] // 4. 앞에서부터 k개만 잘라서 반환 // .limit(k)로 정확히 k개 확보 return IntStream.concat(distinctArr, negatives).limit(k).toArray(); } } }
Share article

silver