- 폰켄몬의 종류가 담긴 배열 nums가 있고 여기서 가져갈 수 있는 폰켓몬의 최대값은 nums/2이다.
- 가져갈 수 있는 폰켄몬 종류의 최대 갯수를 구해야한다. (중복으로 가져가면 해당 폰켄몬의 갯수는 무조건 1이다.)
풀이방법
- 중복값 제거를 위해 HashSet을 사용
- 중복값 제거를 한 HashSet size를 통해 구할 수 있는 폰켄몬의 최대 종류 갯수와 가져갈 수 있는 폰켓몬의 최대값인 nums/2를 비교하여 가져갈 수 있는 폰켄몬 종류의 최대 갯수를 구한다.
- 중복을 제거한 Set의 크기가 nums/2보다 크면 nums/2를, 작으면 Set 사이즈를 리턴
코드
package hashmap_pro;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
List<Integer> nums = new ArrayList<>();
int answer;
while(st.hasMoreTokens()){
nums.add(Integer.parseInt(st.nextToken()));
}
Solution s = new Solution();
// int[] numArr = nums.stream().mapToInt(Integer::intValue).toArray();
int[] numArr = new int[nums.size()];
for(int i = 0; i < nums.size(); i++) {
numArr[i] = nums.get(i);
}
answer = s.solution(numArr);
}
public int solution(int[] nums) throws IOException {
int answer = 0;
int max = nums.length/2;
Set<Integer> hashset = new HashSet<>();
for(int num : nums){
hashset.add(num);
}
if(hashset.size()<max){
return hashset.size();
} else{
return max;
}
}
}