본문 바로가기
코딩테스트/programming_JAVA

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

by prometedor 2023. 9. 12.

LinkedHashSet 이용하기

LinkedHashSet<Integer> str = new LinkedHashSet<>();

ㄴ HashSet 은 순서를 보장하지 않으므로 LinkedHashSet 이용해보기

 

https://school.programmers.co.kr/learn/courses/30/lessons/181858

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int k) {
        // LinkedHashSet을 사용하여 중복을 제거하고 유지하는 집합 생성
        LinkedHashSet<Integer> set = new LinkedHashSet<>();
        
        for (int num : arr) {
            set.add(num);
        }

        // set을 배열로 변환
        Integer[] array = set.toArray(new Integer[0]);
        
        // 결과 배열 초기화
        int[] answer = new int[k];
        
        // k개 이하의 고유한 요소가 있을 때
        if (array.length >= k) {
            for (int i = 0; i < k; i++) {
                answer[i] = array[i];
            }    
        } 
        // k개보다 적은 고유한 요소가 있을 때
        else {
            for (int i = 0; i < array.length; i++) {
                answer[i] = array[i];
            }
            for (int i = array.length; i < k; i++) {
                answer[i] = -1;
            }
        }
        
        return answer;
    }
}