자료구조 & 알고리즘/프로그래머스

Level 0. 무작위로 K개의 수 뽑기

diesuki4 2023. 5. 2. 05:42
Level 0. 무작위로 K개의 수 뽑기

 

 

배열의 인덱스와 값을 활용해 O(1) 시간에 중복을 확인했다.

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> arr, int k)
{
    int* p = new int[100'001]();
    vector<int> answer(k, -1);
    int i = 0;

    for (int e : arr)
    {
        if (k <= i)
            break;

        if (p[e] == 0)
        {
            ++p[e];
            answer[i++] = e;
        }
    }
    
    delete [] p;

    return answer;
}