https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=cpp
풀이
1~200000까지 번호가 잇는 n개의 폰켓몬이 들어올때
n/2개를 고르고, 해당 폰켓몬의 종류를 구하는 문제
첨엔 맵에 넣고.. 맵을 순회하면서 구해야되나 하다가
그냥 set에 박아서 종류 구한 다음 생각해보면
n/2가 set보다 크거나 같은 경우 -> set에 있는거 다 하나씩 넣고 중복해서 더넣어야됨, 최대 종류는 set의 크기
n이 set 보다 작은경우 -> n/2 종류가 최대였다
#include <bits/stdc++.h>
using namespace std;
int solution(vector<int> nums)
{
int answer = 0, count = nums.size()/2;
set<int> sset;
for(int x : nums)sset.insert(x);
if(count >= sset.size()) answer = sset.size();
else answer = count;
return answer;
}
'C++ 알고리즘' 카테고리의 다른 글
SWEA D2 1926 간단한 369 (0) | 2024.10.10 |
---|---|
SWEA D2 1954 달팽이 숫자 (0) | 2024.10.10 |
백준 2910 빈도정렬(map, vector) (1) | 2024.09.29 |
백준 1992 쿼드트리(재귀) (0) | 2024.09.29 |
백준 1629 곱셈(모듈러, 재귀) (0) | 2024.09.27 |