[LeetCode] Count Largest Group

아르당·2026년 5월 4일

LeetCode

목록 보기
292/303
post-thumbnail

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

Problem

정수 n이 주어진다.
1부터 n까지 숫자를 각 자릿수의 합에 따라 그룹을 만들어야 한다. 예를 들어, 14와 5는 같은 그룹이고, 13과 3은 서로 다른 그룹이다.
크기가 가장 큰 그룹, 즉 최대 요소를 가진 그룹의 개수를 반환해라.

Example

#1
Input: n = 13
Output: 4
Explanation: 총 9개의 그룹이 있고, 이 숫자 들은 1부터 13까지의 각 자릿수의 합에 따라 그룹이 된다 : [1,10], [2,11], [3,12], [4,13], [5], [6], [7], [8], [9].
4개의 그룹이 가장 큰 크기이다.

#2
Input: n = 2
Output: 2
Explanation: 크기가 1인 그룹 [1], [2] 2개가 있다.

Constraints

  • 1 <= n <= 10^4

Solved

class Solution {
    public int countLargestGroup(int n) {
        Map<Integer, Integer> map = new HashMap<>();
        int maxSize = 0;

        for(int i = 1; i <= n; i++){
            int sum = 0;
            int num = i;

            while(num > 0){
                sum += num % 10;
                num /= 10;
            }

            map.put(sum, map.getOrDefault(sum, 0) + 1);
            maxSize = Math.max(maxSize, map.get(sum));
        }

        int count = 0;

        for(int val : map.values()){
            if(val == maxSize){
                count++;
            }
        }

        return count;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글