Algorithm/프로그래머스
[프로그래머스] 포켓몬
대표대표
2024. 3. 22. 18:09
문제
입출력 예제
풀이
최대로 고를 수 있는 포켓몬의 종류의 수를 출력하면 되는 문제이다.
고를 수 있는 경우의 수는 두 가지로 나뉜다.
1. 포켓몬의 종류가 포켓몬.Size() / 2 보다 크거나 같은 경우
2. 포켓몬의 종류가 포켓몬.Size() / 2 보다 작은 경우
즉 전체 포켓몬의 수 / 2 가 포켓몬의 종류의 수 보다 많은 경우 포켓몬의 종류의 수를 출력하고, 그게 아닐 경우 즉 포켓몬의 종류가 전체 포켓몬의 수 / 2 보다 클 경우 포켓몬의 수 / 2 를 출력하면 된다.
필요한 정보는 포켓몬의 종류, 포켓몬의 수 이니 Map을 사용하여 관리한다.
코드
import java.util.HashMap;
class Solution {
public int solution(int[] nums) {
int answer = 0;
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
}
if (map.keySet().size() >= nums.length / 2) {
answer = nums.length / 2;
} else {
answer = map.keySet().size();
}
return answer;
}
}