[프로그래머스] Lv.0 무작위로 K개의 수 뽑기.java

hgghfgf·2023년 6월 10일
0

프로그래머스

목록 보기
141/227

무작위로 K개의 수 뽑기.java

import java.util.*;

class Solution {
    private static final int NOT_FOUND = -1;

    public int[] solution(int[] arr, int k) {
        int[] answer = new int[k];
        Arrays.fill(answer, NOT_FOUND);
        Set<Integer> used = new HashSet<>();
        int index = 0;
        
        for (int num : arr) {
            if (!used.contains(num)) {
                answer[index++] = num;
                used.add(num);
            }
            
            if (index >= k) {
                break;
            }
        }
        
        return answer;
    }
}

answer 배열을 생성하고 모든 원소를 -1로 초기화합니다. 이를 통해 반환할 배열의 길이가 k보다 작을 경우 나머지 값들은 -1로 채워집니다.
used라는 Set을 생성합니다. 이 Set은 이미 사용된 숫자를 추적하기 위해 사용됩니다.
index 변수를 0으로 초기화합니다. 이 변수는 answer 배열의 현재 인덱스를 나타냅니다.
배열 arr을 순회하면서 다음 작업을 수행합니다.

  • 현재 숫자 num이 used에 포함되어 있지 않은 경우:
    answer 배열의 index 위치에 num을 할당합니다.
    used에 num을 추가합니다.
    index를 증가시킵니다.
  • 만약 index가 k보다 크거나 같은 경우, 이미 answer 배열의 길이가 k에 도달했으므로 더 이상 반복하지 않고 종료합니다.
    최종적으로 생성된 answer 배열을 반환합니다.

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

0개의 댓글