본문 바로가기

Algorithm/Brute Force

(C++) - LeetCode (easy) 1399. Count Largest Group

반응형

https://leetcode.com/problems/count-largest-group/

 

전수조사 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

key는 각 자리수 합, value는 그 개수로 map 변수 groupMap, 정답 변수 ans와 largestGroupNum를 선언 후 적잘히 초기화해줍니다.

📔 풀이과정

1. 1 ~ n까지 loop를 수행하며 다음을 수행합니다.

  1-1. 현재 원소 i의 각 자리수 합 값을 구합니다. 이 값을 sumDigits에 저장합니다.

  1-2. sumDigits를 key로 해 value값을 증가시켜줍니다.

  1-3. largestGroupNum에 갱신된 값과 비교해 최댓값을 넣어줍니다.

2. groupMap의 원소를 순회하며 largestGroupNum과 같은 값의 개수를 세어 ans에 저장합니다.

📔 정답 출력 | 반환

ans를 반환합니다.


📕 Code

📔 C++

class Solution {
public:
    int getSumDigits(int i){
        int sum = 0;
        string s = to_string(i);
        for(auto c : s) {
            sum += c - '0';
        }
        return sum;
    }

    int countLargestGroup(int n) {
        map <int, int> groupMap;
        int ans = 0, largestGroupNum = 0;
        for(int i = 1; i <= n; i++) {
            int sumDigits = getSumDigits(i);
            groupMap[sumDigits]++;
            largestGroupNum = max(largestGroupNum, groupMap[sumDigits]);
        }
        for(auto g : groupMap) {
            if (largestGroupNum == g.second) {
                ans++;
            }
        }
        return ans;
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.