문제 링크
Link 📃
문제 풀이
- 주어지는 폰켓몬 중 가질 수 있는 최대 갯수는 N/2 이기 때문에 nums 배열 안에 있는 숫자(폰켓몬)의 갯수가 N/2보다 크면 답은 N/2, 적으면 nums 배열의 숫자 종류의 갯수로 답이 나오게 풀었다.
- python은 defaultdict를 이용하여 기본값은 0이지만 nums에서 만나면 차례대로 +1씩 증가하게 만들어 중복을 제거했다.
- js에서는 객체를 이용해서 객체값에 들어가면 +1이 되도록 하여 중복을 제거했다.
다른 풀이 탐색
- set으로 중복을 줄인 후 length를 계산.
해결 코드
Python
from collections import defaultdict
def solution(nums):
dic = defaultdict(int)
max_num = len(nums)//2
for i in nums:
dic[i] += 1
if max_num < len(dic):
return max_num
else:
return len(dic)
javascript
function solution(nums) {
var answer = 0;
let arr = {}
const max_num = nums.length / 2
for(let i = 0 ; i < nums.length ; i++){
if(!arr[nums[i]]){
arr[nums[i]] = 1
}else{
arr[nums[i]] += 1
}
}
if(Object.keys(arr).length > max_num){
return max_num
}else{
return Object.keys(arr).length
}
}