[LeetCode] Distribute Candies

아르당·2026년 1월 30일

LeetCode

목록 보기
122/134
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

앨리스는 n개의 사탕을 가지고 있는데, i번째 사탕은 candyType[i] 유형이다. 앨리스는 자신의 체중이 늘기 시작했다는 것을 알아차리고 의사를 방문했다.

의사는 앨리스에게 가지고 있는 사탕의 n / 2 개만 먹으라고 조언했다(n은 항상 짝수). 앨리스는 사탕을 매우 좋아해서 의사의 조언을 따르면서도 최대한 다양한 종류의 사탕을 많이 먹고 싶다.

길이가 n인 정수 배열 candyType이 주어졌을 때, 그녀가 n / 2개의 서로 다른 종류의 사탕만 먹을 경우, 그녀가 먹을 수 있는 최대 서로 다른 종류의 사탕의 수를 반환해라.

Example

#1
Input: candyType = [1, 1, 2, 2, 3, 3]
Output: 3
Explanation: 앨리스는 오직 사탕 6 / 2 = 3 개만 먹을 수 있다. 오직 세 가지 종류가 있고, 그녀는 종류별로 각 하나씩 먹을 수 있다.

#2
Input: candyType = [1, 1, 2, 3]
Output: 2
Explanation: 앨리스는 오직 사탕 4 / 2 = 2 개만 먹을 수 있다. 그녀가 먹을 수 있는 종류는 [1, 2], [1, 3], [2, 3]이고, 그녀는 오직 다른 두 종류만 먹을 수 있다.

#3
Input: candyType = [6, 6, 6, 6]
Output: 1
Explanation: 앨리스는 오직 사탕 4 / 2 = 2 개만 먹을 수 있다. 그녀는 사탕 두 개를 먹을 수 있지만, 종류는 한 가지 뿐이다.

Constraints

  • n == candyType.length
  • 2 <= n <= 10^4
  • -10^5 <= candyType[i] <= 10^5

Solved

class Solution {
    public int distributeCandies(int[] candyType) {
        Set<Integer> candyTypes = new HashSet<>();

        for(int candy: candyType) candyTypes.add(candy);

        if(candyTypes.size() >= candyType.length / 2) return candyType.length / 2;
        
        return candyTypes.size();
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글