[프로그래머스] 폰켓몬 문제풀이- 자바, 파이썬

Chan Young Jeong·2023년 4월 4일
0

알고리즘

목록 보기
6/27

🔗 링크

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

🙊 문제

폰켄몬의 종류가 담긴 배열 nums가 있고, 여기서 가져갈 수 있는 폰켓몬의 최대값은 nums/2이다.

가져갈 수 있는 최대 폰켄몬 종류 갯수를 구해야한다 (중복으로 가져가면 해당 폰켄몬의 갯수는 무조건 1이다)

😮 알고리즘 풀이 순서

  1. 최대값을 구하기 위해 nums의 length에 2를 나눈 값을 max에 대입한다.
  2. 중복을 제거한 값을 구하기 위해 Set을 이용해서 nums를 담아준다.
  3. 중복을 제거한 Set의 크기가 max보다 크면 max를, 작으면 Set 사이즈를 리턴한다.

java

public class Solution {
  public int solution(int[] nums) {
    int max = nums.length / 2;

    // 중복제거하기
    HashSet<Integer> numsSet = new HashSet<>();

    for (int num : nums) {
      numsSet.add(num);
    }

    // 중복을 제거한 셋의 크기가 max보다 크면 max를, 작으면 numsSet의 size를 리턴
    if (numsSet.size() > max) {
      return max;
    } else {
      return numsSet.size();
    }
  }

}

python

def solution(nums):
    return min(len(set(nums)),len(nums)//2)

0개의 댓글