이번에 풀어본 문제는
프로그래머스 폰켓몬 입니다.
import java.util.*;
class Solution {
public int solution(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int n : nums) {
set.add(n);
}
return Math.min(set.size(), nums.length / 2);
}
}
주어진 배열의 크기가 N이라고 할 때, N / 2만큼의 값을 선택하는 경우의 수 중 가장 다양한 선택을 할 수 있는 개수를 구하는 문제입니다.
Set에 값을 모두 담아 중복되는 입력값을 제외하고, N / 2보다 작거나 같은 개수를 선택할 수 있는 최대한의 경우를 구하면 됩니다. 최종적으로 Set의 크기와 N / 2와 값을 비교해서 작은 값을 리턴해주면 됩니다.
레벨 1 문제였습니다!