[프로그래머스/JAVA] 폰켓몬

밍주🫧 ·2025년 3월 1일
0
post-thumbnail

문제 원문

프로그래머스 폰켓몬

문제 정리

폰켓몬 N마리가 있고, N/2마리만 고를 수 있다.
최대한 많은 종류의 폰켓몬을 구하려고 할 때 최대로 많은 종류의 수를 구해라

사실 문제 이해하는데 꽤 걸렸다.
처음에는 ArrayList로 중복된 걸 일일이 지우려는 멍청한짓을 하다가
HashSet 을 사용해서 풀어보기로 했다

HashSet은 중복 값을 허용하지 않기 때문에 일일이 비교해서 지우는 것보다 훨씬 효율적!

작성 코드

//hashSet 사용하기 위함
import java.util.*;

public class Main {

    public int solution(int[] nums) {

        int ans = 0;
        
        //최대 n/2개의 포켓몬을 담을 수 있음
        int max = nums.length /2;


        HashSet<Integer> hasNum = new HashSet<>();
  
        //hashSet에는 중복된 값은 들어가지 않음
        for (int n : nums) {
            hasNum.add(n);
        }

		//설명 따로 첨부 
        if(hasNum.size() < max) {
            ans = hasNum.size();
        } else {
            ans = max;
        }

        return ans;
    }

}

✔️설명 따로 첨부
중복된 값을 제거한 hasNum에는 현재 가지고 갈 수 있는 포켓몬의 종류만 남게 된다.
내가 가지고 갈 수 있는 포켓몬의 수가 현재 가지고 갈 수 있는 포켓몬의 종류보다 크다면
나는 현재 가지고 갈 수 있는 포켓몬의 종류의 수만큼의 종류를 가지고 갈 수 있게 되기 때문에 max가 아닌 hasNum의 크기를 답으로 지정한다.

결과

성공!

0개의 댓글

관련 채용 정보