Lewis's Tech Keep
[BOJ][20440] 🎵니가 싫어 싫어 너무 싫어 싫어 오지 마 내게 찝쩍대지마🎵 - 1 - JAVA 본문
링크 : https://www.acmicpc.net/problem/20440
[ BOJ ][JAVA][20440] 니가 싫어 싫어 너무 싫어 싫어 오지마 내게 찝적대지마 - 1
www.acmicpc.net/problem/20440 20440번: 🎵니가 싫어 싫어 너무 싫어 싫어 오지 마 내게 찝쩍대지마🎵 - 1 첫째 줄에 지동이의 방에 출입한 모기의 마릿수 N(1 ≤ N ≤ 1,000,000)가 주어진다. 다음 N개의 줄에
coder-in-war.tistory.com
- 풀이 보고 품
- 우선순위 큐 문제
- 초당 cnt 하게되면 21억번 max일 때 시간 초과
- 따라서 새로운 시간이 add 될 때, poll 될 때 체크를 해주면 10,000 번 안에서 끝나게 된다.
더보기
import java.util.*;
public class Solution {
static class Mogi {
int startTime;
int endTime;
public Mogi(int startTime, int endTime) {
this.startTime = startTime;
this.endTime = endTime;
}
public int getStartTime() {
return startTime;
}
public int getEndTime() {
return endTime;
}
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
ArrayList<Mogi> mogis = new ArrayList();
for (int i = 0; i < N; i++) {
int st = sc.nextInt();
int et = sc.nextInt();
mogis.add(new Mogi(st, et));
}
mogis.sort(Comparator.comparing(Mogi::getEndTime).thenComparing(Mogi::getStartTime));
PriorityQueue<Integer> q = new PriorityQueue<>();
q.add(mogis.get(0).endTime);
int cnt = 1;
int s = mogis.get(0).startTime;
int e = mogis.get(0).endTime;
for(Mogi mogi: mogis) {
System.out.println(mogi.startTime + " : " + mogi.endTime);
}
for (int i = 1; i < N; i++) {
while (!q.isEmpty() && q.peek() < mogis.get(i).startTime) { // 가장 빠른 endtime = q.peek() < starttime 작다 : 이미 지나갔다
q.poll();
}
if(!q.isEmpty() && q.peek() == mogis.get(i).startTime) { // 가장 빠른 endTime == startime 이라면 길이 늘려줘
if (q.peek() == e) {
e = mogis.get(i).endTime; // endTime은 i의 endTime으로 해줘
}
q.poll();
}
q.add(mogis.get(i).endTime);
if(q.size() > cnt) {
cnt = q.size();
s = mogis.get(i).startTime;
e = q.peek();
}
}
System.out.println(cnt);
System.out.println(s + " " + e);
}
}
'Java > 알고리즘' 카테고리의 다른 글
[BOJ][6236] 용돈관리 - JAVA (0) | 2021.06.23 |
---|---|
[프로그래머스] 보석 쇼핑 (0) | 2021.06.18 |
[BOJ][6497] 전력난 - JAVA (0) | 2021.06.13 |
[프로그래머스] 다단계 칫솔 판매 (0) | 2021.06.12 |
[BOJ][20300] 서강근육맨 - JAVA (0) | 2021.06.11 |
Comments