프로그래머스 : 폰켓몬(C++)

Chanyang Im·2022년 7월 21일
0

프로그래머스

목록 보기
5/6
post-thumbnail

문제

풀이

C++ STL에서 set을 이용해서 풀었습니다. set은 중복을 허용하지 않는 균형 이진 트리입니다. 따라서 주어진 모든 폰켓몬을 set에 insert하고 그 size()를 통해 답을 구했습니다.

만약 N/2보다 작으면 중복이 많이 발생한 것을 의마하고 폰켓몬의 종류의 개수의 최대는 size()가 됩니다. N/2보다 크면 중복이 적게 발생한 것을 의미하고 폰켓몬의 종류의 개수의 최대는 N/2가 됩니다.

코드

#include <vector>
#include <set>
using namespace std;

int solution(vector<int> nums)
{
    int answer = 0;
    int N = nums.size();
    
    // set은 중복을 허용하지 않는 균형 이진 트리
    set<int> s;
    
    for(int i = 0; i < nums.size(); i++) {
        s.insert(nums[i]);
    }
    
    if(s.size() < (N/2)) {
        answer = s.size();
    }
    else {
        answer = N/2;
    }
    
    return answer;
}
profile
안녕하세요!! 세상에 관심이 많은 공학자입니다!😆

0개의 댓글