알고리즘/프로그래머스 Level1

[프로그래머스,Java] Level1 : 폰켓몬

류창 2021. 8. 4. 19:02
반응형

 

문제분석:  문제만 잘 이해하면 쉬운문제다.

요점은,  우리는 N마리의 포켓몬중 N/2마리를 뽑고싶은데, 뽑아도 최대한 많이, 중복없이 뽑고싶어한다.

 

그래서 중복없이 최대한 몇마리를 뽑을수 있느냐를 묻는 문제다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        int max_choice =nums.length/2;
        Set<Integer> set =new HashSet<>();
        for(int data:nums){
            set.add(data);
        }
        if(set.size()>=max_choice){
            answer=max_choice;
        }
        else{
            answer=set.size();
        }
        return answer;
    }
}
cs

 

문제풀이:

우리가 뽑을수있는 기회는 max_choice로 N/2다.

 

그리고 중복이 들어오면 알아서 제거해주는 HashSet을 사용했다. 

 

만약에 중복을 제거한 Set의 크기가 max_choice보다 크면  우리는 max_choice만큼 최대로 뽑을수있다.

 

반대로, max_choice가 Set 크기보다 크면, 우리는 set.size() 만큼 최대로 뽑을수있다.

반응형