본문 바로가기

프로그래머스(Java)/Level 0

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

728x90

코드 힌트

  1. 중복 원소 제외하기:
    • 주어진 배열을 순회하면서 중복된 원소를 제외하고, 결과 배열에 원소를 추가합니다. 중복 확인을 위해 List를 사용하며 contains() 혹은 indexOf()로 요소를 찾았는지 확인합니다.
  2. 결과 배열 초기화:
    • 결과 배열의 길이는 k로 설정합니다. 배열을 채우면서 빈 자리는 -1로 설정합니다.
  3. 빈 자리를 -1로 채우기:
    • 배열을 순회하여 중복을 제외한 후, 결과 배열의 빈 자리를 -1로 채워서 배열의 길이를 맞춥니다.
  4. 효율적인 중복 확인:
    • List의 원소의 중복 여부를 확인합니다. 배열의 길이와 k의 값에 따라 결과 배열을 조정합니다.

 


정답은 더보기 클릭

더보기
import java.util.*;

class Solution {
    public int[] solution(int[] arr, int k) {
        // 결과를 저장할 배열을 생성합니다. 길이는 k입니다.
        int[] result = new int[k];
        
        // 중복을 확인하기 위한 리스트를 생성합니다.
        List<Integer> list = new ArrayList<>();
        
        // 현재까지 결과 배열에 저장된 원소의 인덱스입니다.
        int index = 0;
        
        // 주어진 배열을 순회합니다.
        for (int i = 0; i < arr.length; i++) {
            // 현재 원소가 리스트에 없고, 결과 배열의 빈 자리가 있는 경우
            if (!list.contains(arr[i]) && index < k) {
                // 결과 배열에 원소를 추가하고 인덱스를 증가시킵니다.
                result[index++] = arr[i];
                
                // 리스트에 원소를 추가하여 중복을 방지합니다.
                list.add(arr[i]);
            }
        }
        
        // 결과 배열에 빈 자리가 있는 경우, -1로 채웁니다.
        for (int i = index; i < k; i++) {
            result[i] = -1;
        }
        
        // 결과 배열을 반환합니다.
        return result;
    }
}
728x90