문제 풀이

[프로그래머스] 폰켓몬

컴영 2020. 5. 28. 16:53

풀이)

어려운 문제는 아니였지만 풀이 방법이 여러가지가 있어 남겨본다.


나같은 경우는 vector를 정렬해서, 중복되는 원소들을 지우는 코드를 사용했는데

다른 분들은 unordered_map, unordered_set을 사용했다.


vector의 unique함수 사용 코드)

#include <vector> #include <algorithm> using namespace std; int solution(vector<int> nums) { int count = nums.size()/2; sort(nums.begin(),nums.end()); nums.erase(unique(nums.begin(),nums.end()),nums.end()); return count < nums.size()? count : nums.size(); }



unordered_map 사용코드)
#include <vector>
#include <unordered_map>

using namespace std;

int solution(vector<int> nums)
{
    unordered_map<int, int> hash;
    for (auto num: nums) {
        hash[num] += 1;
    }

    return min(hash.size(), nums.size() / 2);

}


unordered_set 사용코드)

#include <unordered_set> using namespace std; int solution(vector<int> nums) { unordered_set<int> hash(nums.begin(), nums.end()); return min(hash.size(), nums.size() / 2);

}