폰켓몬 (Lv.1)
문제 설명
- 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 함
- 같은 종류의 폰켓몬은 같은 번호
- 당신은 최대한 다양한 종류의 폰켓몬을 가지길 원하기 때문에, 최대한 많은 종류의 폰켓몬을 포함해서 N/2마리를 선택
- N마리 폰켓몬의 종류 번호가 담긴 배열 nums가 매개변수로 주어질 때, N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return 하도록 solution 함수를 완성하기
제한사항
- nums는 폰켓몬의 종류 번호가 담긴 1차원 배열
- nums의 길이(N)는 1 이상 10,000 이하의 자연수이며, 항상 짝수
- 폰켓몬의 종류 번호는 1 이상 200,000 이하의 자연수로 나타냄
- 가장 많은 종류의 폰켓몬을 선택하는 방법이 여러 가지인 경우에도, 선택할 수 있는 폰켓몬 종류 개수의 최댓값 하나만 return하면 됨
입출력 예시
nums | return |
---|---|
[3,1,2,3] | 2 |
[3,3,3,2,2,4] | 3 |
[3,3,3,2,2,2] | 2 |
1
2
3
4
5
function solution(nums) {
const max = nums.length / 2;
const setNum = new Set(nums);
return max > setNum.size ? setNum.size : max;
}
나름 풀이
- 폰켓몬 수의 반을 골라야하기 때문에 종류가 다 다를 때 최대값은 max까지 가능함
- 중복되는걸 제거하고 폰켓몬이 몇 종류가 있는지 알기 위해 set에 담아줌
- set이 전체 폰켓몬의 1/2가 안되면 종류번호는 set의 크기가 됨
- set이 max값보다 크다면, 최대로 가져갈 수 있는 max값이 리턴됨
** 출처 : https://l4279625.tistory.com/13