폰켓몬 N마리가 있고, N/2마리만 고를 수 있다.
최대한 많은 종류의 폰켓몬을 구하려고 할 때 최대로 많은 종류의 수를 구해라
사실 문제 이해하는데 꽤 걸렸다.
처음에는 ArrayList로 중복된 걸 일일이 지우려는 멍청한짓을 하다가
HashSet 을 사용해서 풀어보기로 했다
HashSet은 중복 값을 허용하지 않기 때문에 일일이 비교해서 지우는 것보다 훨씬 효율적!
//hashSet 사용하기 위함
import java.util.*;
public class Main {
public int solution(int[] nums) {
int ans = 0;
//최대 n/2개의 포켓몬을 담을 수 있음
int max = nums.length /2;
HashSet<Integer> hasNum = new HashSet<>();
//hashSet에는 중복된 값은 들어가지 않음
for (int n : nums) {
hasNum.add(n);
}
//설명 따로 첨부
if(hasNum.size() < max) {
ans = hasNum.size();
} else {
ans = max;
}
return ans;
}
}
✔️설명 따로 첨부
중복된 값을 제거한 hasNum에는 현재 가지고 갈 수 있는 포켓몬의 종류만 남게 된다.
내가 가지고 갈 수 있는 포켓몬의 수가 현재 가지고 갈 수 있는 포켓몬의 종류보다 크다면
나는 현재 가지고 갈 수 있는 포켓몬의 종류의 수만큼의 종류를 가지고 갈 수 있게 되기 때문에 max가 아닌 hasNum의 크기를 답으로 지정한다.
성공!