본문 바로가기

Algorithm/Brute Force

(C++) - LeetCode (easy) 1854. Maximum Population Year

반응형

https://leetcode.com/problems/maximum-population-year/description/

전수조사 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

최대 인구 maxPopulation, 정답 연도 ans, 1950 ~ 2050까지의 전 해 인구대비 변화 populationChanges를 선언 후 적절히 초기화합니다. 

📔 풀이과정

1. logs의 원소를 순회하며 populationChanges에 출생과 사망을 기록해줍니다. 1950년부터이므로 해당값만큼 빼 index를 조정한 후  populationChanges에 저장합니다.

2. 1950년 부터 현재 인구를 추적할 currentPopulation을 선언 후 0으로 초기화합니다.

3. 1950년부터 2050년까지의 연도를 확인하면서 다음을 진행합니다.

  3-1. currentPopulation에 populationChanges를 누적해 더함으로써 현재 연도의 인구를 구할 수 있습니다. 해당값을 저장합니다.

  3-2. currentPopulation이 maxPopulation보다 크다면 정답변수 ans와 maxPopulation을 갱신해줍니다.

📔 정답 출력 | 반환

ans를 반환합니다.


📕 Code

📔 C++

class Solution {
public:
    int maximumPopulation(vector<vector<int>>& logs) {
        int maxPopulation = 0;
        int ans = 1950;
        int populationChanges[101] = {0};
        for (auto l : logs) {
            int birth = l[0];
            int death = l[1];
            populationChanges[birth - 1950]++;
            populationChanges[death - 1950]--;
        }
        int currentPopulation  = 0;
        for (int i = 0; i <= 100; i++) {
            currentPopulation += populationChanges[i];
            if (currentPopulation > maxPopulation) {
                ans = i + 1950;
                maxPopulation = currentPopulation;
            }
        }
        return ans;
    }
};

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