| 문제 | 레벨 | 정답률 |
|---|---|---|
| 폰켓몬 | Lv.1 | 65% |

import java.util.*;
class Solution {
public int solution(int[] nums) {
int result = 0;
Set<Integer> set = new HashSet<>();
for(int i : nums){
set.add(i);
}
if(set.size()<=nums.length/2){
return set.size();
} else{
return nums.length/2;
}
}
}
우선 Set의 특징인 중복 불가능을 활용해서 중복을 제거한 서로 다른 수들만 저장을 하였다.
그리고 서로 다른 수의 개수가 nums.length/2보다 작거나 같으면 set.size()를 리턴, 즉 서로 다른 숫자 개수를 리턴하였다.
그게 아니라면 nums.length/2, 즉 전체 배열의 절반의 개수를 리턴하였다.
import java.util.*;
class Solution {
public int solution(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int num : nums) {
set.add(num);
}
int uniqueCount = set.size();
int halfLength = nums.length / 2;
return Math.min(uniqueCount, halfLength);
}
}
내가 만든 코드와 큰 로직은 변하지 않았고, 사소한 부분들을 간결하게 만들었다.
if-else문을 Math.min() 메서드를 사용해서 간단하게 해결한 코드이다.
Set은 Java의 컬렉션 프레임워크 인터페이스 중 하나이다.
중복을 허용하지 않고, 순서가 없는 것이 특징!
** 생성 : Set<String> set = new HashSet<>();