[프로그래머스 고득점 Kit] 폰켓몬 C++ 문제 풀이
- Archive2/ProblemSolving
- 2022. 9. 11.
반응형
#INFO
난이도 : LEVEL1
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/1845
#SOLVE
N마리의 폰켓몬이 번호로 주어집니다.
같은 번호의 폰켓몬은 같은 종류의 폰켓몬으로 취급하며, N마리의 포켓몬 중 N/2 마리의 폰켓몬을 가져갈 수 있습니다.
이 때 가져갈 수 있는 폰켓몬의 최대 개수를 구하는 문제입니다.
우선, unordered_set 자료구조를 이용해 폰켓몬의 종류를 중복을 허용하지 않게 입력받습니다.
예를들어 [3번, 1번, 2번, 3번] 총 4마리의 폰켓몬을 입력받았다면, set에는 [3번, 1번, 2번] 총 3마리의 폰켓몬의 정보가 저장됩니다.
unordered_set<int> pocketmon;
for(const auto& i : nums){
if(pocketmon.find(i) == pocketmon.end()){
pocketmon.insert(i);
}
}
문제에서 최대 N/2 마리의 폰켓몬을 가져갈 수 있다고 했으니, 폰켓몬을 가져갈 수 있는 종류의 최대 가짓수는 N/2 입니다.
따라서 N/2와 set에 저장된 폰켓몬의 정보의 크기중 더 큰 값을 정답으로 리턴하면 됩니다.
int answer = 0;
int pocketmon_size = nums.size();
if(pocketmon.size() > pocketmon_size / 2) answer = pocketmon_size / 2;
else answer = pocketmon.size();
return answer;
#CODE
#include <iostream>
#include <unordered_set>
#include <vector>
using namespace std;
int solution(vector<int> nums)
{
int answer = 0;
int pocketmon_size = nums.size();
unordered_set<int> pocketmon;
for(const auto& i : nums){
if(pocketmon.find(i) == pocketmon.end()){
pocketmon.insert(i);
}
}
if(pocketmon.size() > pocketmon_size / 2) answer = pocketmon_size / 2;
else answer = pocketmon.size();
return answer;
}
도움이 되셨다면 하단의 공감 부탁드립니다!
반응형
'Archive2 > ProblemSolving' 카테고리의 다른 글
[프로그래머스 고득점 Kit] 올바른 괄호 C++ 문제 풀이 (0) | 2022.09.26 |
---|---|
[프로그래머스 고득점 Kit] 위장 C++ 문제 풀이 (0) | 2022.09.23 |
[프로그래머스 고득점 Kit] 완주하지 못한 선수 C++ 문제 풀이 (0) | 2022.09.10 |
[BOJ] C++ 7785 "회사에 있는 사람" 문제 풀이 (0) | 2022.09.09 |
[BOJ] C++ 1620 "나는야 포켓몬 마스터 이다솜" 문제 풀이 (0) | 2022.09.05 |