본문 바로가기
🍪 Ect/#Study

[99클럽 코테 스터디] 6일차 TIL 해시

by 개발한 너굴씨 2024. 7. 27.
728x90

 

 

오늘의 문제는 프로그래머스

 

 

폰켓몬

 

 

문제

 

 

 

 

문제 접근 및 풀이 과정

권장 풀이 시간은 30분이었고, 저는 27분이 걸렸습니다.

 

처음 문제를 접했을 때는 설명이 길고 복잡해 보였지만, 내용을 정리해 보니 생각보다 어렵지 않게 로직을 구현할 수 있었습니다. 

 

 

 

문제 접근 방식

해시셋을 통해 풀었습니다. 처음 선택할 수 있는 최대 폰켓몬 수를 구하고 배열 nums에 있는 폰켓몬의 종류가 중복될 수 있으므로 이를 해시셋으로 중복 종류를 제거하고자 했습니다.

 

 

 

 

 

문제 풀이

import java.util.HashSet;

class Solution {
    public int solution(int[] nums) {
        
        int len = nums.length;
        int maxSelection = len / 2;
    
        HashSet<Integer> deduped = new HashSet<>();
        
        for (int i = 0; i < nums.length; i++) {
            int num = nums[i];
            deduped.add(num);
        }
        
        int maxUnique = deduped.size();
        int result;
        
        if (maxSelection < maxUnique) {
            result = maxSelection;
        } else {
            result = maxUnique;
        }
        
        return result;
    }
}

 

 

HashSet 사용하기

중복된 폰켓몬의 종류를 제거하기 위한 방법으로 HashSet을 사용했습니다.

 

HashSet은 중복을 허용하지 않는 자료구조기 때문에 배열에 있는 폰켓몬 종류와 중복을 제거하는데 적합하다고 생각했습니다. 

 

 

 

반복문 자세히 알아보기

중복 제거를 위한 반복문으로 nums 배열을 순회하며 각 폰켓몬의 종류를 HashSet 추가합니다. 

 

이를 통해 중복된 폰켓몬의 종류를 제거하고 고유한 폰켓몬 종류의 수를 구할 수 있습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이렇게 오늘 5일차 TIL을 작성해 보았습니다.

728x90

댓글