[Programmers] Lv.1 폰켓몬 (python, js)

j-ij-i·2022년 12월 12일
1

알고리즘 문제풀이

목록 보기
2/10
post-thumbnail

문제 링크

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
    }
}
profile
안녕하세요, 프론트엔드를 좋아하는 개발자 jiji입니다.

0개의 댓글