[LeetCode] Maximum Population Year

아르당·2026년 7월 9일

LeetCode

목록 보기
397/561
post-thumbnail

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

Problem

logs[i] = [birthi, deathi]가 i번째 사람의 출생과 사망 연도를 나타내는 2차원 정수 배열 logs가 주어진다.

x연도의 인구는 그 연도에 살아 있는 사람의 수이다. i번째 사람은 x연도의 인구에 포함되는데, 이는 x가 출생 연도 i와 사망 연도 i - 1을 모두 포함하는 범위에 있을 때이다. 단, 사망한 연도에는 인구에 포함되지 않는다.

가장 인구가 많은 연도를 반환해라.

Example

#1
Input: logs = [[1993, 1999], [2000, 2010]]
Output: 1993
Explanation: 최대 인구수는 1이고, 1993년은 이 인구를 가진 가장 빠른 연도이다.

#2
Input: logs = [[1950, 1961], [1960, 1971], [1970, 1981]]
Output: 1960
Explanation: 최대 인구수는 2이고, 1960년과 1970년에 나타난다.
가장 빠른 연도는 1960이다.

Constraints

  • 1 <= logs.length <= 1000
  • 1950 <= birthi < deathi <= 2050

Solved

class Solution {
    public int maximumPopulation(int[][] logs) {
        int[] year = new int[101];

        for(int[] log : logs){
            year[log[0] - 1950]++;
            year[log[1] - 1950]--;
        }

        int max = 0;
        int population = 0;
        int result = 0;

        for(int i = 0; i < 101; i++){
            population += year[i];

            if(population > max){
                max = population;
                result = i;
            }
        }

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

0개의 댓글