코딩테스트/프로그래머스

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

QuickClid 2025. 3. 18. 12:12

오늘 풀어볼 문제는...

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 설명

N마리의 포켓몬이 주어진다. 플레이어는 주어진 N마리의 폰켓몬 중 최대 N/2마리의 폰켓몬을 고를 수 있다. 이 경우에, 고를 수 있는 폰켓몬-종류의 최댓값을 구하라.


입출력 예

더보기

폰켓몬 배열이;

 

1. [3, 1, 2, 3]으로 주어졌다면;

--> result = 2.

 

2. [3, 3, 3, 3, 3, 3]으로 주어졌다면;

--> result = 1.


풀이

1. 일단, 고를 수 있는 폰켓몬-종류의 최댓값을 구한다.

--> 폰켓몬 배열 속의 모든 원소들을 set에 넣고, 그 set의 size를 통해 구한다.

 

2. 만일 "고를 수 있는 폰켓몬-종류의 최댓값(set.size)"이 "고를 수 있는 폰켓몬의 수(N/2)"보다 많다면 N/2를 return한다. 그렇지 않다면 그대로 return한다.


코드

#include <vector>
#include <set>

using namespace std;

int solution(vector<int> nums)
{
	set<int> s;
	for (int i = 0; i < nums.size(); i++)
		s.insert(nums[i]);

	if (s.size() > nums.size() / 2)
		return nums.size() / 2;
	else
		return s.size();
}

읽어주셔서 감사합니다!

궁금한 점이 있다면 댓글로 문의주세요!