프로그래머스 - 폰켓몬

well-life-gm·2021년 11월 15일
0

프로그래머스

목록 보기
56/125

1점짜리 문제다.

중복제거 해주고, N/2이랑 중복이 제거된 갯수 중에 더 작은 값을 리턴해주면 된다.

#include <vector>

using namespace std;

int hashMap[200000];
int solution(vector<int> nums)
{
    int answer = 0;
    vector<int> tmp;
    int n = nums.size() / 2;
    for(int i=0;i<nums.size();i++) {
        if(hashMap[nums[i]] == 0) {
            hashMap[nums[i]] = 1;
            answer++;
        }
    }
    answer = min(answer, n);
    return answer;
}

아래는 중복제거를 위해서 unordered_set으로 구현한 코드이다. (정렬이 필요없기 때문에 set을 쓸 필요가 없음)

#include <vector>
#include <unordered_set>
#include <algorithm>

using namespace std;

int solution(vector<int> nums)
{
    unordered_set<int> s(nums.begin(), nums.end());
    return min(s.size(), nums.size() / 2);
}

결과

profile
내가 보려고 만든 블로그

0개의 댓글