프로그래머스 : 포켓몬 [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개의 댓글