문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
logs[i] = [birthi, deathi]가 i번째 사람의 출생과 사망 연도를 나타내는 2차원 정수 배열 logs가 주어진다.
x연도의 인구는 그 연도에 살아 있는 사람의 수이다. i번째 사람은 x연도의 인구에 포함되는데, 이는 x가 출생 연도 i와 사망 연도 i - 1을 모두 포함하는 범위에 있을 때이다. 단, 사망한 연도에는 인구에 포함되지 않는다.
가장 인구가 많은 연도를 반환해라.
#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이다.
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;
}
}