코딩테스트/프로그래머스
[프로그래머스] 폰켓몬 (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();
}