Alice 는 사탕을 가지고 있는데 i번째 사탕의 타입은 candyType[i]라고 한다. Alice 는 의사의 조언대로 현재 가지고 있는 사탕의 절반만 먹기로 했는데 이 때 최대한 많은 종류의 사탕을 먹고 싶어한다.
이러한 조건에서 Alice가 먹을 수 있는 사탕 종류의 최댓값을 리턴하는 문제이다.
Example을 보자
1번 예시를 보면 사탕의 종류는 1, 2, 3 총 세가지이고 Alice는 6 / 2 = 3인 3개의 사탕만 먹을 수 있다 그러므로 Alice가 먹을 수 있는 가장 많은 사탕의 종류는 3가지이다.
const distributeCandies = function (candyType) {
const haveToEat = candyType.length / 2;
const candyTypeCount = [...new Set(candyType)].length;
return haveToEat <= candyTypeCount ? haveToEat : candyTypeCount;
};
먼저 Alice가 먹을 수 있는 사탕의 갯수를 haveToEat 변수에 할당을 해주고 candyType의 중복을 없애서 새로운 배열 set에 할당해주었다.
만약 사탕의 가짓수가 먹어야하는 사탕 수 이상이라면 Alice는 먹을 수 있는 사탕의 수가 가장 많은 종류를 먹을 수 있는 경우이고, 반대 상황이라면 사탕의 가짓수가 Alice가 먹을 수 있는 가장 많은 종류의 사탕 가짓 수이다.
submit을 해보니
정답이었다!