반응형
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;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.