본문 바로가기
Algorithm/Programmers

프로그래머스 1845번 폰켓몬

by eurowondollaryen 2022. 7. 16.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/1845

풀이

1. nums배열의 값의 종류를 뽑아야 하므로, 1번 순회하여 HashMap에 담는다. 시간복잡도 O(n)

2. 종류 수가 nums.length / 2보다 크면 nums.length / 2를 반환. 아니면 종류 수 그대로 반환한다.

 

import java.util.HashMap;
class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        HashMap<Integer, Integer> monsterCount = new HashMap<Integer, Integer>();
        for(int monsterKind: nums) {
            if(monsterCount.get(monsterKind) != null) {
                monsterCount.put(monsterKind, monsterCount.get(monsterKind) + 1);
            } else {
                monsterCount.put(monsterKind, 1);
                answer++;
            }
        }
        answer = answer > (nums.length / 2) ? (nums.length / 2) : answer;
        return answer;
    }
}