문제
내가 작성한 정답
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