프로그래머스 : 포켓몬 [Level 1] [C++]

ChoRong0824·2023년 5월 7일
0

C

목록 보기
17/17
post-thumbnail

코드 1

#include <vector>
#include <set>

using namespace std;

int solution(vector<int> nums)
{
    set <int> numset(nums.begin(), nums.end());
    if(numset.size()> (nums.size()/2))
        return nums.size()/2;
    return numset.size();
}

코드 2

#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> nums)
{
    sort(nums.begin(), nums.end());
    int uniqueCount = unique(nums.begin(), nums.end()) - nums.begin();
    return min(uniqueCount, static_cast<int>(nums.size() / 2));
}

풀이 설명

  • sort 함수를 사용하여 입력 벡터를 정렬합니다.
  • unique 함수를 사용하여 중복된 요소를 벡터의 맨 뒤로 이동시키고, 중복되지 않은 요소들의 시작점(첫 번째 중복 요소의 위치)을 반환합니다. 이 때 반환된 값에서 begin을 빼줌으로써 중복되지 않은 요소의 개수를 계산할 수 있습니다.
  • 반환된 중복되지 않은 요소의 개수와 nums.size() / 2 중 작은 값을 반환합니다. nums.size() / 2는 최대로 선택할 수 있는 요소의 개수이며, 중복되지 않은 요소의 개수가 이를 초과할 수 없습니다.
profile
정진, "어제보다 더 나은 오늘이 되자"

0개의 댓글