해시 카테고리임에도 벡터를 소팅해서 풀었음...
해시도 정확히 알아둬야 쓸 수 있으니 조금씩 정리해두려고 함
기존 풀이
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> nums)
{
int answer = 1;
int idx = 0;
int nums_size = nums.size();
sort(nums.begin(), nums.end());
while (answer < nums_size * 0.5) {
if (idx + 1 < nums_size) {
if (nums[idx] != nums[idx + 1]) {
++answer;
}
++idx;
}
else break;
}
return answer;
}
수정한 풀이
#include <vector>
#include <unordered_map>
using namespace std;
int solution(vector<int> nums)
{
unordered_map<int, int> poke;
for (auto num: nums) {
poke[num] += 1;
}
return min(poke.size(), nums.size() / 2);
}