https://school.programmers.co.kr/learn/courses/30/lessons/1845
문제 요약
총 N 마리 포켓몬 중 N/2마리를 가져갈 수 있다.
폰켓몬 종류의 수가 최대한 다양하게 가질 수 있도록 선택한다.
구현 착안
가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아야하므로, 중복을 허용하지 않는 hashset을 사용하여 구현한다.
구현 순서
다음과 같은 순서로 생각해볼 수 있다.
1. int[]의 nums를 hashset으로 담아주어 중복을 제거한다.
2. answer는 hashset의 크기가 될 것이다.
3. 그러나, answer의 최댓값은 N/2 (홍 박사님이 허락해준 폰켓몬의 최댓값) 이다.
4. if문으로 hashset의 크기가 N/2보다 크면 answer는 N/2이다.
5. answer를 return해준다.
제출 코드
import java.util.HashSet;
class Solution {
public int solution(int[] nums) {
int answer = 0;
HashSet<Integer> set = new HashSet<>();
for(int num : nums) {
set.add(num);
}
answer = set.size();
if (nums.length / 2 < set.size()) answer = nums.length / 2;
return answer;
}
}
'Algorithm' 카테고리의 다른 글
[Programmers] 동적 계획법 > 정수 삼각형 (Java) (0) | 2023.10.13 |
---|---|
동적 계획법(dynamic programming) (1) | 2023.10.13 |
[Programmers] 게임 맵 최단거리 Java (0) | 2023.10.10 |
[Programmers] 타겟 넘버 Java (0) | 2023.10.09 |
DFS와 BFS (0) | 2023.10.09 |