Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Number Theory
- 구현
- Method
- Math
- greedy
- simulation
- sorting
- Binary Search
- hash table
- bit manipulation
- implement
- Data Structure
- geometry
- Counting
- Matrix
- dynamic programming
- java
- two pointers
- Binary Tree
- 파이썬
- 자바
- 코테
- Tree
- 코딩테스트
- Class
- SQL
- string
- database
- Stack
- array
Archives
- Today
- Total
코린이의 소소한 공부노트
[LeetCode/Easy] 1854. Maximum Population Year 본문
1. Input
1) int[][] logs
- i번째 사람은 logs[i][0]에 태어나서 logs[i][1]에 죽었다.
2. Output
1) 인구 수가 가장 많은 연도를 출력한다.
2) 연도가 여러 개라면 가장 빠른 연도를 출력한다.
3) 살아있는 연도에 죽은 연도는 포함하지 않는다.
3. Constraint
1) 1 <= logs.length <= 100
2) 1950 <= birth_i < death_i <= 2050
4. Example
Input: logs = [[1950,1961],[1960,1971],[1970,1981]] -> Output: 1960
설명: 1960년과 1970년에 2명으로 가장 많은 인구 수가 있었는데, 더 빠른 것은 1960년이므로 이를 반환한다.
5. Code
1) 첫 코드(2023/04/21)
HashMap<Integer,Integer> m = new HashMap<>();
int max = 0;
for(int i=0 ; i<logs.length ; i++){
for(int j=logs[i][0] ; j<logs[i][1] ; j++){
m.put(j, m.getOrDefault(j,0)+1);
if(m.get(j)>max)
max = m.get(j);
}
}
ArrayList<Integer> year = new ArrayList<>();
Iterator it = m.entrySet().iterator();
while(it.hasNext()){
Map.Entry e = (Map.Entry)it.next();
if(max==(int)e.getValue())
year.add((int)e.getKey());
}
year.sort(Comparator.naturalOrder());
return year.get(0);
2) 1번 코드가 너무너무 심각하게 구려서 살짝 손 본 코드(2023/04/21)
int max = 0;
for(int i=0 ; i<logs.length ; i++){
for(int j=logs[i][0] ; j<logs[i][1] ; j++){
m.put(j, m.getOrDefault(j,0)+1);
if(m.get(j)>max)
max = m.get(j);
}
}
int min = Integer.MAX_VALUE;
Iterator it = m.entrySet().iterator();
while(it.hasNext()){
Map.Entry e = (Map.Entry)it.next();
if(max==(int)e.getValue()){
int year = (int)e.getKey();
if(year<min)
min = year;
}
}
return min;
- 메모리는 덜 먹는데 여전히 느리다.
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[프로그래머스/Lv.0] n의 배수 (0) | 2023.04.22 |
---|---|
[프로그래머스/Lv.0] 정수 부분 (0) | 2023.04.22 |
[LeetCode/Easy] 1800. Maximum Ascending Subarray Sum (0) | 2023.04.21 |
[LeetCode/Easy] 1796. Second Largest Digit in a String (0) | 2023.04.21 |
[LeetCode/Easy] 1790. Check if One String Swap Can Make Strings Equal (0) | 2023.04.21 |