프로그래머스 - 무작위로 K개의 수 뽑기

JJJ·2023년 5월 22일
0

코딩 기초 트레이닝

목록 보기
27/29


풀이

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int k) {
        HashSet<Integer> set = new HashSet<>();
        int[] answer=new int[k];
        
        int count=0;
        for(int i=0; i<arr.length; i++) {
            if(!set.contains(arr[i])) {
                set.add(arr[i]);
                answer[count]=arr[i];
                count++;
            }
            if(count==k) {
                break;
            }
        }
        for(int i=count; i<k; i++) {
            answer[i]=-1;
        }
        return answer;
    }
}

풀이방법
1) 중복된 값을 제거하기 위한 HashSet 객체 set을 생성
2) 중복값이 없을경우 if수행, count가 k와 같아지면 반복문 탈출
3) 2번째 반복문을 통해 answer의 빈자리를 -1로 채운다.

배열에서 중복값을 없애기 위한 방법

1. HashSet

2. LinkedHashSet

3. 2중for문으로 제거하기

이중 HashSet과 LinkedHashSet은 중복된 값을 갖지 않는 배열을 생성하지만,
HashSet의 경우 배열에 입력되는 순서가 없기 때문에 무작위로 입력된다.
반면, HashSetList의 경우 순서가 보장된 상태로 중복값을 제거한 배열을 갖는다.

해당 풀이에서는 HashSet을 사용하여 중복값만 제거하고, for문을 이용하여 배열 answer에 순차적으로 값을 입력하는 방식을 사용했다.

profile
Think Talk Act

0개의 댓글