✔ 폰켓몬
문제 분석하기
N/2마리를 가져가도 좋다고 했으므로 최대 폰켓못 종류 번호의 개수 값을 N/2로 정한 후,
각 폰켓몬의 종류가 이보다 적을 경우 이를 출력하고 이보다 클 경우 N/2를 출력
손으로 풀어보기
- HashSet에 폰켓몬 저장
- HashSet의 크기와 가져갈 수 있는 폰켓몬의 수인 N/2 비교
- 더 작은 것을 리턴
- 폰켓몬 종류 번호 개수 리턴
슈도코드 작성하기
nums(폰켓몬의 종류 번호가 담긴 1차원 배열)
set(폰켓몬 종류를 담은 HashSet)
set에 nums 저장
Set의 크기와 최대 가져갈 수 있는 폰켓몬의 수 비교
더 작은 값을 폰켓몬 종류 번호의 개수로 리턴
코드 구현하기
/**
* 1845) 폰켓몬
*/
public class K001_1845 {
// nums(폰켓몬의 종류 번호가 담긴 1차원 배열)
public int solution(int[] nums) {
// set(폰켓몬 종류를 담은 HashSet)
Set<Integer> set = new HashSet<>();
// set에 nums 저장
for (int num : nums)
set.add(num);
// Set의 크기와 최대 가져갈 수 있는 폰켓몬의 수 비교
int answer = nums.length / 2;
answer = Math.min(answer, set.size());
// 더 작은 값을 폰켓몬 종류 번호의 개수로 리턴
return answer;
}
// 테스트 케이스
public static void main(String[] args) {
K001_1845 solution = new K001_1845();
int[] nums = { 3, 1, 2, 3 };
int result = solution.solution(nums);
System.out.println(result);
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[42626] 더 맵게 (0) | 2023.10.28 |
---|---|
[12906] 같은 숫자는 싫어 (0) | 2023.10.28 |
[142086] 가장 가까운 같은 글자 (0) | 2023.10.26 |
[147355] 크기가 작은 부분문자열 (0) | 2023.10.25 |
[150370] 개인정보 수집 유효기간 (0) | 2023.10.24 |