본문 바로가기

Algorithm

[JAVA 알고리즘] 폰켓몬

✅ 문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

.

✅ 코드

 

import java.util.*;

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
       Set<Integer> temp = new HashSet<>();
         for (int s : nums) {
           temp.add(s);
        }

        int maxTypes = temp.size();    
        int maxPick = nums.length / 2; 
        
        return Math.min(maxTypes, maxPick);
    }
}

 

 

 

✏️ 공부한점

일단 문제자체가 이해가 어려울수있는데 

 

 

  • 홍 박사님 연구실에 N마리 폰켓몬이 있음 → 예: [3, 1, 2, 3]
  • 같은 종류는 같은 번호
  • 당신은 절반(N/2) 마리만 가져갈 수 있음 → 예: 4마리 중 2마리
  • 목표: 가능한 한 많은 종류의 폰켓몬을 갖고 싶음

이렇게 이해하면된다.

 

즉 [3, 3,3,3] 이렇게있을 경우 결국 1종류밖에없기때문에 2종류를 가져갈수있지만 n/2로 가져갈수있는 최종종류는 1개인거다

그래서 Math.min(maxTypes, maxPick); 이걸로 최소값을 구해서 반환하면된다.

 

maxTypes는 최대 종류의 수이고 maxPick은 최대로 가져갈수있는수이다.