🐣 알고리즘 삐약/✏️ 냅다 덤벼보는 문제풀이

[프로그래머스] 폰켓몬 | 해시 | lv.1 | JAVA

우주수첩 2024. 10. 31. 17:22
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

import java.util.*;
class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        
        HashSet<Integer> set = new HashSet<>();
        for(int i : nums){
            set.add(i);
        }
        
        if(set.size()>nums.length/2){
            answer = nums.length/2;
        }else{
            answer = set.size();
        }
        return answer;
        
    }
    public int getC(int n, int m){
        //nCm
        int left=1;
        int right = 1;
        for(int i =n;i>=n-m;i--){
            left*=1;
        }
        for(int i=1;i<=n;i++){
            right*=i;
        }
        
        return left/right;
    }
}

 

확통으로 풀면 nCm이라 

n부터 n-m까지의 곱과 m!을 구해서 getC라는 조합 식을 구현 

근데 다시 생각해보니 굳이 필요 없었던.

 

1. 폰켓몬 종류 > 데리고 있는 폰켓몬 수/2

-> 서로 다른 폰켓못 종류를 데려올 수 있다는 의미.

->  데리고 있는 폰켓몬 수/2 반환

 

2.그 외

-> 모든 종류의 폰켓몬을 데리고 있다는 의미.

-> 몇 종류의 폰켓몬을 가지고 있는 지 반환

-> set.size 반환

 

 

728x90