콘솔창 & 윈도우창/코딩 테스트

프로그래머스 LV.1 폰켓몬

뽀또치즈맛 2024. 8. 17. 15:22

 
map 이용

int solution(vector<int> nums)
{
    int answer = 0;

    int half = nums.size() / 2;

    set<int> s(nums.begin(), nums.end());
    int kind = s.size();

    if (half < kind)  answer = half;
    else answer = kind;

    return answer;

}

 
 
vector 이용

#include <vector>
#include <set>
#include <iostream>
#include <algorithm>

using namespace std;


int solution(vector<int> nums)
{
    int answer = 0;

    int half = nums.size() / 2;

    vector<int> types = nums;

    sort(types.begin(), types.end());
    types.erase(unique(types.begin(), types.end()), types.end());
    int kind = types.size();


    if (half < kind)  answer = half;
    else answer = kind;

    return answer;

}

 
 
만약 모든 n마리의 포켄몬이 다른 종류의 포켓몬이라면,
답은 n/2가 된다.
 
한편 종류가 하나라면 답은 1이 된다.
 
이것을 바탕으로 n/2와 종류의 개수 중 더 적은 수가 답이되는 것을 알 수 있다.