알고리즘/프로그래머스 1단계

프로그래머스 - 폰켓몬 - C++

게임만드는학생 2024. 7. 17. 14:42

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

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

int solution(vector<int> nums)
{
    int answer = 0;
    map<int,int> m;
    for(int i=0;i<nums.size();i++)
    {
        // 못찾았다면
        if(m.find(nums[i])==m.end())
        {
            m.insert({nums[i],1});
        }
        else
            m[nums[i]]++;
    }
    for(int i=0;i<m.size();i++)
    {
        if(answer>=nums.size()/2)break;
        answer++;
        
    }
    return answer;
}

 

종류에 따라 폰켓몬에 번호가 부여되는데 번호로 이루어진 배열이 주어진다.

이 때, 최대 n/2마리를 고르는 경우의 수 중, 가장 많은 종류를 가질 때의 종류수를 리턴하는 문제이다. 

 

편의를 위해 map을 사용하였다. 

키는 종류, 값은 수로 하여 map을 생성하고 맵의 크기만큼 반복문을 돌며 answer를 증가시킨다. 

이 때, 값이 n/2를 넘으면 종료한다.