백준 20440[자바] java 🎵니가 싫어 싫어 너무 싫어 싫어 오지 마 내게 찝쩍대지마🎵 - 1
문제 링크: https://www.acmicpc.net/problem/20440
▶문제
🎵네가 싫어 싫어 너무 싫어 싫어 오지 마 내게 찝쩍대지 마🎵 - 유자, 모기 송 中
모기를 싫어하는 지동이는 어느 날 문득 자신의 방에 모기가 가장 많이 있는 시간대가 언제인지 궁금해졌다. 다행히 지동이 방은 최첨단 시스템이 갖춰져 있어 어떤 모기가 방에 언제 입장했고 언제 퇴장했는지를 기록할 수 있다.
지동이를 도와 모기들의 방 입장, 퇴장 시각이 주어졌을 때 모기들이 가장 많이 있는 시간대와 해당 시간대에 모기가 몇 마리가 있는지 구하는 프로그램을 만들어보자.
▶입력
첫째 줄에 지동이의 방에 출입한 모기의 마릿수 N(1 ≤ N ≤ 1,000,000)가 주어진다.
다음 N개의 줄에 모기의 입장 시각 TE과 퇴장 시각 TX이 주어진다. (0 ≤ TE < TX ≤ 2,100,000,000)
모기는 [TE, Tx)동안 존재한다
▶출력
첫째 줄에 지동이 방에 모기가 가장 많이 있는 시간대의 모기 마릿수를 출력한다.
지동이 방에 모기가 가장 많이 있는 시간대의 연속 구간 전체를 [TEm, TXm)이라고 할 때,
둘째 줄에 TEm, TXm을 공백으로 구분하여 출력한다. 단, 여러 가지 방법이 있으면 가장 빠른 시작 시각을 기준으로 출력한다.
▶해설
이전에 풀었던 강의실 배정과 매우 비슷한 문제여서 설명은 생략하겠습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
class Time implements Comparable<Time> {
long start;
long end;
public Time(long start, long end) {
this.start = start;
this.end = end;
}
@Override
public int compareTo(Time o) {
if (this.end < o.end) {
return -1;
} else if (this.end == o.end) {
if (this.start < o.start) {
return 1;
} else {
return -1;
}
} else {
return 1;
}
}
}
public class Main {
static int n;
static long[][] arr;
static long a, b;
static PriorityQueue<Time> queue = new PriorityQueue<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
arr = new long[n][2];
for (int i = 0; i < n; i++) {
String[] s = br.readLine().split(" ");
arr[i][0] = Long.parseLong(s[0]);
arr[i][1] = Long.parseLong(s[1]);
}
Arrays.sort(arr, (a, b) -> {
if (a[0] <= b[0]) {
return -1;
} else {
return 1;
}
});
int max = 0;
for (int i = 0; i < n; i++) {
while (!queue.isEmpty() && arr[i][0] > queue.peek().end) {
queue.poll();
}
if(!queue.isEmpty() && arr[i][0] == queue.peek().end){
if(queue.peek().end==b){
b = arr[i][1];
}
queue.poll();
}
queue.add(new Time(arr[i][0], arr[i][1]));
if(queue.size()>max){
max = queue.size();
a = arr[i][0];
b = queue.peek().end;
}
}
System.out.println(max);
System.out.println(a + " " + b);
}
}
'Alogorithm' 카테고리의 다른 글
백준 18116 [자바] java 로봇 조립 (0) | 2022.02.14 |
---|---|
백준 1976 [자바] java 여행 가자 (0) | 2022.02.14 |
백준 1477 [자바] java 휴게소 세우기 (0) | 2022.02.07 |
백준 21275 [자바] java 폰 허석만 (0) | 2022.01.26 |
백준 2015 [자바] java 수들의 합4 (0) | 2022.01.20 |
댓글
이 글 공유하기
다른 글
-
백준 18116 [자바] java 로봇 조립
백준 18116 [자바] java 로봇 조립
2022.02.14 -
백준 1976 [자바] java 여행 가자
백준 1976 [자바] java 여행 가자
2022.02.14 -
백준 1477 [자바] java 휴게소 세우기
백준 1477 [자바] java 휴게소 세우기
2022.02.07 -
백준 21275 [자바] java 폰 허석만
백준 21275 [자바] java 폰 허석만
2022.01.26