[프로그래머스] 폰켓몬 문제풀이 (Java)

ajufresh·2020년 8월 5일
2

프로그래머스

목록 보기
14/14
post-custom-banner

🔗 링크

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

🙊 문제

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

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


👀 예제로 문제 파악하기

입력 : nums [3,1,2,3]

최대로 가져갈 수 있는 폰켄몬 갯수는 2개이다. (최대 2개)

입력 : nums [3,3,3,2,2,2]

최대로 가져갈 수 있는 폰켄몬 갯수는 2개이다. (최대 3개까지 가져갈 수 있지만, 모두 중복이기 때문에)


😮 알고리즘 풀이 순서

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

💻 코드

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();
    }
  }

  @Test
  public void 정답() {
    Assert.assertEquals(2, solution(new int[]{3, 1, 2, 3}));
  }
}
profile
공블로그
post-custom-banner

0개의 댓글