[๋ฐฑ์ค] 20440. ๐ต๋๊ฐ ์ซ์ด ์ซ์ด ๋๋ฌด ์ซ์ด ์ซ์ด ์ค์ง ๋ง ๋ด๊ฒ ์ฐ์ฉ๋์ง๋ง๐ต - 1
๋ฌธ์ ๋งํฌ
ํ์ด ๊ณผ์
์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํด ํ์์ต๋๋ค. ์์ ๋ฅผ ํตํด ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์์ ๊ฐ์ ๋ชจ๊ธฐ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋๋ค. ๋ชจ๊ธฐ โ ์ด ๋จผ์ ๋ฐฉ์ ์ง์ ํ ์ดํ์ ๋ชจ๊ธฐ โก๊ฐ ์ง์ ํด์ผ ๋น๋ก์ ๊ฐ์ ์๊ฐ๋์ ๋ ๋ง๋ฆฌ๊ฐ ๊ณต์กดํ ์ ์์ต๋๋ค. ๋ํ, ๋ชจ๊ธฐ โข์ ๋ชจ๊ธฐ โ ๊ณผ โก๊ฐ ์ง์ ํ ์ดํ์ ๋ค์ด์์ผ ๋์๊ฐ๋์ ์ต๋ ์ธ ๋ง๋ฆฌ๊ฐ ๊ณต์กดํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์, ๋ชจ๊ธฐ๊ฐ ์ง์ ํ๋ ์๊ฐ์ ๋ฐ๋ผ ์ต๋ ๋ชจ๊ธฐ ๋ง๋ฆฟ์๊ฐ ๋ฌ๋ผ์ง ์ ์๊ธฐ์, ์ง์ ์๊ฐ์ ์ค๋ฆ์ฐจ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํด์ค๋๋ค.
๋จผ์ ์ฒซ ๋ฒ์งธ ๋ชจ๊ธฐ๋ฅผ ์ฐ์ ์์ ํ์ ๋ฃ์ด์ค๋๋ค. ์ด ๋, ํ์ ์ฌ์ด์ฆ๋ 1์ด๊ณ , ์ด๋ ๊ณง ์ต๋ ๋ชจ๊ธฐ๊ฐ 1๋ง๋ฆฌ์์ ์๋ฏธํฉ๋๋ค. ๋ํ, ๋ชจ๊ธฐ๊ฐ ๊ฐ์ฅ ๋ง์ด ์๋ ์๊ฐ๋๋ ๋ชจ๊ธฐ โ ์ ์๊ฐ๋, ์ฆ [2, 16) ์ด ๋ฉ๋๋ค.
๋ค์ ๋ฒ ๋ชจ๊ธฐ๊ฐ ๋ฐฉ ์์ ์๋ ๋ชจ๊ธฐ๋ค ์ค ๊ฐ์ฅ ๋จผ์ ๋๊ฐ๋ ๋ชจ๊ธฐ๊ฐ ๋๊ฐ๊ธฐ ์ ์ ๋ค์ด๊ฐ๋ค๋ฉด, ๋ฐฉ ์ ์ต๋ ๋ชจ๊ธฐ ์๋ ์ฆ๊ฐํ๊ฒ ๋ฉ๋๋ค. ํ์ฌ ๋ฐฉ ์์๋ ํ ๋ง๋ฆฌ์ ๋ชจ๊ธฐ(๋ชจ๊ธฐ โ )๊ฐ ์์ผ๋ฉฐ, ๊ทธ ๋ชจ๊ธฐ๋ 16์ ๋๊ฐ๋๋ค. ํด๋น ๋ชจ๊ธฐ๊ฐ ๋๊ฐ๊ธฐ ์ ์ ๋ชจ๊ธฐ โก๊ฐ ๋ค์ด์ค๊ฒ ๋๋ฏ๋ก(๋ชจ๊ธฐ โก์ ์ ์ฅ : 6 < ๋ชจ๊ธฐ โ ์ ํด์ฅ : 16) ์ต๋ ๋ชจ๊ธฐ๋ 2๋ง๋ฆฌ๊ฐ ๋ฉ๋๋ค. ๋ํ, ์ต๋ ๋ชจ๊ธฐ์๊ฐ ์ฆ๊ฐํ์ผ๋ฏ๋ก, ๋ฐฉ์ ๋ง ๋ค์ด์จ ๋ชจ๊ธฐ์ ์ ์ฅ ๋ฐ ํด์ฅ ์๊ฐ์ ๊ณ ๋ คํด ๊ตฌ๊ฐ์ ์ค์ ํด์ค๋๋ค.
๋ฐฉ์ ์๋ ๋ชจ๊ธฐ๋ค ์ค ๊ฐ์ฅ ๋จผ์ ๋๊ฐ๋ ๋ชจ๊ธฐ์ ํด์ฅ ์๊ฐ๊ณผ ๋ค์ ๋ฒ ๋ค์ด์ค๋ ๋ชจ๊ธฐ์ ์
์ฅ ์๊ฐ์ด ๋ฐฉ ์ ์ต๋ ๋ง๋ฆฟ์
๋ฅผ ๊ฒฐ์ ์ง์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ฌ ๋ฐฉ ์์๋ 3๋ง๋ฆฌ์ ๋ชจ๊ธฐ๊ฐ ์๊ณ , ๋ฐฉ ์ ๋ชจ๊ธฐ๋ค ์ค ๊ฐ์ฅ ๋จผ์ ๋๊ฐ๋ ๋ชจ๊ธฐ(์ ๊ทธ๋ฆผ์ ๋นจ๊ฐ์)์ ํด์ฅ ์๊ฐ์ด 10, ๋ค์ ๋ฒ ๋ค์ด์ค๋ ๋ชจ๊ธฐ(์ ๊ทธ๋ฆผ์ ํ๋์)์ ์
์ฅ ์๊ฐ์ด 5์ด๋ฉด, ๋ชจ๊ธฐ๋ ์ต๋ 4๋ง๋ฆฌ๊ฐ ์กด์ฌ(์๊ฐ 5๋ถํฐ ์๊ฐ10๊น์ง)ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์, ๋ชจ๊ธฐ์ ํด์ฅ ์๊ฐ ์ ๋ณด๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ๊ฐ์ง๊ณ ์์ด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ฐ์ ์์ ํ์ ์ ๋ ฌ ๊ธฐ์ค์ ๋์
ํฉ๋๋ค.
๋ชจ๊ธฐ โข์ ๋ฐฉ ์ ๊ฐ์ฅ ๋จผ์ ๋๊ฐ๋ ๋ชจ๊ธฐ(๋ชจ๊ธฐ โก)๊ฐ ๋๊ฐ๊ธฐ ์ ์ ๋ค์ด์ค๋ฏ๋ก, ์ต๋ 3 ๋ง๋ฆฌ๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค. ๋ชจ๊ธฐ์ ์ต๋์๊ฐ ๋ณ๊ฒฝ๋์์ผ๋ฏ๋ก, ๊ฐ์ฅ ๋ง์ด ๊ณต์กดํ ์ ์๋ ์๊ฐ๋๋ฅผ ๋ณ๊ฒฝํด์ค๋๋ค.
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
Pair[] pairs = new Pair[N];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
int Te = Integer.parseInt(st.nextToken());
int Tx = Integer.parseInt(st.nextToken());
pairs[i] = new Pair(Te, Tx, 1);
}
Arrays.sort(pairs, new Comparator<Pair>() {
@Override
public int compare(Pair o1, Pair o2) {
return Integer.compare(o1.start, o2.start);
}
});
PriorityQueue<Pair> pq = new PriorityQueue<>(new Comparator<Pair>() {
@Override
public int compare(Pair o1, Pair o2) {
return Integer.compare(o1.end, o2.end);
}
});
int maxCnt = 0, Tem = 0, Txm = 0;
for (Pair p : pairs) {
while (!pq.isEmpty() && p.start >= pq.peek().end) pq.poll();
pq.add(p);
if (pq.size() > maxCnt) {
maxCnt = pq.size();
Tem = p.start;
Txm = pq.peek().end;
} else if (pq.size() == maxCnt && Txm == p.start) {
Txm = p.end;
}
}
System.out.println(maxCnt + "\n" + Tem + " " + Txm);
}
static class Pair {
int start, end;
public Pair(int start, int end, int cnt) {
this.start = start;
this.end = end;
}
}
}
๋๊ธ๋จ๊ธฐ๊ธฐ