문제 설명글은 길지만 잘 읽어보면..
최대가질 수 있는 수는 n/2이고, 포켓몬 종류의 수가 n/2보다 적으면 종류의 숫자가 답이다.
예외의 수로 둘의 수가 같으면 2를 반환하고...
첫번째로 생각해낸것이... 배열로 반을 나눈 후 앞부분과 뒷부분을 하나씩 비교해서 중복되는 값을 빼려고 했으나... 노가다일것 같아서 ArrayList로 중복값을 빼면서 계산해 봤다..
import java.util.ArrayList;
class Solution {
public int solution(int[] nums) {
int answer = 0;
ArrayListlist=new ArrayList();
//list.add(nums[0]);
for (int i : nums) {
if (! list.contains(nums[i]))
list.add(nums[i]);
}
if (list.size()==nums.length/2)
answer=nums.length/2;
else if ( list.size() < nums.length/2 )
answer=list.size();
else if (list.size() > nums.length/2)
answer=nums.length/2;
return answer;
}
}
실패. 왜지??
1번 3번 테스트는 통과했는데 2번이 실패.
잘 모르겠다.
hashset으로 해봤다.
import java.util.HashSet;
class Solution {
public int solution(int[] nums) {
int answer = 0;
HashSet<Integer>set = new HashSet<Integer>();
for (int i = 0; i < nums.length; i++) {
set.add(nums[i]);
}
if (set.size()==nums.length/2) {
answer = set.size();
}
else if (set.size()>nums.length/2) {
answer = nums.length/2;
}
else if (set.size()<nums.length/2) {
answer = set.size();
}
return answer;
}
}