Home 230209_Algorithm | 폰켓몬(Lv.1)
Post
Cancel

230209_Algorithm | 폰켓몬(Lv.1)

폰켓몬 (Lv.1)


문제 설명

  • 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 함
  • 같은 종류의 폰켓몬은 같은 번호
  • 당신은 최대한 다양한 종류의 폰켓몬을 가지길 원하기 때문에, 최대한 많은 종류의 폰켓몬을 포함해서 N/2마리를 선택
  • N마리 폰켓몬의 종류 번호가 담긴 배열 nums가 매개변수로 주어질 때, N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return 하도록 solution 함수를 완성하기


제한사항

  • nums는 폰켓몬의 종류 번호가 담긴 1차원 배열
  • nums의 길이(N)는 1 이상 10,000 이하의 자연수이며, 항상 짝수
  • 폰켓몬의 종류 번호는 1 이상 200,000 이하의 자연수로 나타냄
  • 가장 많은 종류의 폰켓몬을 선택하는 방법이 여러 가지인 경우에도, 선택할 수 있는 폰켓몬 종류 개수의 최댓값 하나만 return하면 됨


입출력 예시

numsreturn
[3,1,2,3]2
[3,3,3,2,2,4]3
[3,3,3,2,2,2]2


1
2
3
4
5
function solution(nums) {
  const max = nums.length / 2;
  const setNum = new Set(nums);
  return max > setNum.size ? setNum.size : max;
}




나름 풀이

  1. 폰켓몬 수의 반을 골라야하기 때문에 종류가 다 다를 때 최대값은 max까지 가능함
  2. 중복되는걸 제거하고 폰켓몬이 몇 종류가 있는지 알기 위해 set에 담아줌
  3. set이 전체 폰켓몬의 1/2가 안되면 종류번호는 set의 크기가 됨
  4. set이 max값보다 크다면, 최대로 가져갈 수 있는 max값이 리턴됨


** 출처 : https://l4279625.tistory.com/13

This post is licensed under CC BY 4.0 by the author.