Given an integer n. Each number from 1 to n is grouped according to the sum of its digits. 
Return how many groups have the largest size.
Example 1:
Input: n = 13
Output: 4
Explanation: There are 9 groups in total, they are grouped according sum of its digits of numbers from 1 to 13:
[1,10], [2,11], [3,12], [4,13], [5], [6], [7], [8], [9]. There are 4 groups with largest size.
Example 2:
Input: n = 2
Output: 2
Explanation: There are 2 groups [1], [2] of size 1.
Example 3:
Input: n = 15
Output: 6
Example 4:
Input: n = 24
Output: 5
Constraints:
1 <= n <= 10^4
import collections

class Solution:
    def countLargestGroup(self, n: int) -> int:
        digit_dict = collections.defaultdict(list)
        max_curr = 0
        answer = 0
        
        def get_digit_sum(num):
            return sum(map(int, str(num)))
        
        for i in range(1, n+1):
            digit_sum_curr = get_digit_sum(i)
            digit_dict[digit_sum_curr].append(i)
            
            if len(digit_dict[digit_sum_curr]) > max_curr:
                max_curr = len(digit_dict[digit_sum_curr]) 
                answer = 1
            elif len(digit_dict[digit_sum_curr]) == max_curr:
                answer += 1
                
        return answer
            

import collections

class Solution:
    def countLargestGroup(self, n: int) -> int:
        digit_dict = collections.defaultdict(list)
        max_curr = 0
        answer = 0
        
        def get_digit_sum(num):
            return sum(map(int, str(num)))
        
        for i in range(1, n+1):
            digit_sum_curr = get_digit_sum(i)
            digit_dict[digit_sum_curr].append(i)
            
            if len(digit_dict[digit_sum_curr]) > max_curr:
                max_curr = len(digit_dict[digit_sum_curr]) 
                answer = 1
            elif len(digit_dict[digit_sum_curr]) == max_curr:
                answer += 1
                
        return answer
            
