개발일지

[Java] 중복제거 (HashSet) / 폰켓몬 본문

Algorithm

[Java] 중복제거 (HashSet) / 폰켓몬

O'mil 2024. 4. 24. 17:25
728x90

🔗 링크

폰켓몬 문제

 

📌 문제 설명

  • N마리의 폰켓몬의 종류 번호가 담긴 배열 nums
  • N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아
  • 그때의 폰켓몬 종류 번호의 개수를 리턴

 

👀 예제

  • nums[3, 1, 2, 3]
    • 4마리의 폰켓몬이 있으므로, 2마리의 폰켓몬을 골라야 함
    • 가장 많은 폰켓몬을 고르기 위해서는 [3, 1] / [3, 2] / [1, 2] 이므로
    • return값은 2
  • numx[3, 3, 3, 2, 2, 4]
    • 6마리의 폰켓몬이 있으므로, 3마리의 폰켓몬을 골라야 함
    • [3, 2, 4]일 때 가장 많으므로
    • return값은 3

 

✏️ 풀이 순서

  1. length / 2를 max값에 대입해 최대로 고를 수 있는 폰켓몬 수 구하기
  2. 중복 제거를 위해 Set에 nums를 담아주기
  3. 중복을 제거한 Set의 개수 구하기
  4. Set이 max보다 크면 max를 리턴, 아니면 set을 리턴

 

💻 코드

import java.util.*;

class Solution {
    public int solution(int[] nums) {
       
        // 최대 길이 구하기
        int answer = nums.length/2;
        
        // 중복 제거 위해 HashSet 사용
        HashSet<Integer> set = new HashSet<>();
        
        for (int num: nums) {
            set.add(num);
        }
        
        // 중복을 제거한 set의 크기가 answer보다 크면 answer 리턴
        if (set.size() > answer) {
            return answer;
        } else {
            return set.size();
        }
    }
}

 

 

🌟 결과

728x90

'Algorithm' 카테고리의 다른 글

[JAVA] Iterator entrySet(), keySet(), values()  (0) 2024.04.25
[JAVA] 전화번호 목록  (0) 2024.04.25
[Java] sort정렬, HashMap / 완주하지 못한 선수  (0) 2024.04.25
Set / HashSet  (0) 2024.04.24
시간 복잡도  (0) 2023.11.17
Comments