https://school.programmers.co.kr/learn/courses/30/lessons/1845
import java.util.*;
class Solution {
public int solution(int[] nums) {
int answer = 0;
// 총 가질 수 있는 폰켓몬 갯수 (N/2)
int ponketmon = nums.length / 2;
// HashMap은 중복 허용 X
HashMap<Integer, Integer> map = new HashMap<>();
// nums를 HashMap에 담아주기
for (int num : nums) {
map.put(num, 0); // key값이 포켓몬 번호
}
if (map.size() >= ponketmon) {
answer = ponketmon;
} else if (map.size() < ponketmon) {
answer = map.size();
}
return answer;
}
}
HashSet을 몰라서 HashMap을 썼는데 HashMap은 key-value의 쌍으로 저장하기 때문에 value에 그냥 임의의 값인 0을 일괄적으로 넣어줬다. 하지만 HashSet은 value만 저장하기 때문에 더 간단하게 풀 수 있었다. 밑의 답변은 HashSet으로 다시 푼 답변 !!
import java.util.*;
class Solution {
public int solution(int[] nums) {
int answer = 0;
// 총 가질 수 있는 폰켓몬 갯수 (N/2)
int ponketmon = nums.length / 2;
// HashSet은 중복 허용 X
HashSet<Integer> set = new HashSet<>();
// nums를 HashSet에 담아주기
for (int num : nums) {
set.add(num);
}
answer = set.size() >= ponketmon ? ponketmon : set.size();
return answer;
}
}
ChatGPT가 알려준 Stream API를 이용한 변환 방법
흥미롭군,,,,
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public int solution(int[] nums) {
int answer = 0;
// 총 가질 수 있는 폰켓몬 갯수 (N/2)
int ponketmon = nums.length / 2;
// Stream API를 사용하여 HashSet으로 변환
HashSet<Integer> set = new HashSet<>(Arrays.stream(nums) // int[]를 IntStream으로 변환
.boxed() // int를 Integer로 박싱
.collect(Collectors.toList())); // List<Integer>로 변환 후 HashSet 생성자로 전달
answer = set.size() >= ponketmon ? ponketmon : set.size();
return answer;
}
}
HashSet도 같이 정리해둬야겠다.