programmers.co.kr/learn/courses/30/lessons/1845
3분만에 푼 문제이다.
중복된 포켓몬들 사이에서 뽑을 수 있는 가장 최대한 여러 종류의 포켓몬을 뽑는 문제였다.
그래서 map에 포켓몬의 종류를 저장하고 (중복이 불가능하므로) 최대 뽑을 수 있는 nums/2 의 값보다 종류가 더 많으면 nums/2만큼, 작으면 종류의 개수(max_choice_collect)만큼 뽑도록 했다.
int solution(vector<int> nums)
{
int answer = 0;
map<int, int> choice;
int nums_size = nums.size();
for(int i=0;i<nums_size;++i)
{
choice[nums[i]]+=1;
}
int max_choice_collect = choice.size();
if(nums_size/2 <= max_choice_collect)
{
answer = nums_size/2;
}
else
{
answer = max_choice_collect;
}
return answer;
}
걱정되는게 모든 문제에 map을 이용하는 경우가 많아서 다른 방법으로 풀 수 있는데도 map으로만 풀려고 해서 시야가 좁아지는 건 아닐까 걱정된다.
'알고리즘 & 자료구조 > 프로그래머스' 카테고리의 다른 글
[C++/알고리즘] 프로그래머스 (베스트 앨범) (0) | 2020.10.08 |
---|---|
[C++/알고리즘] 프로그래머스 (네트워크) (0) | 2020.10.08 |
[C++/알고리즘] 프로그래머스 (두 개 뽑아서 더하기) (0) | 2020.10.08 |
[C++/알고리즘] 프로그래머스 (다트게임) (0) | 2020.10.08 |
[C++/알고리즘] 프로그래머스 (오픈채팅방) (0) | 2020.10.08 |