๋ฌธ์ Gold5
https://www.acmicpc.net/problem/11000
ํ์ด
์ฐ์ ์์ ํ(PriorityQueue) ํ์ฉ
์ฐ์ ์์ ํ๋? ๋ค์ด์จ ์์๋๋ก ๋ฐ์ดํฐ๊ฐ ๋๊ฐ๋ ๊ฒ์ด ์๋ ์ฐ์ ์์๋ฅผ ๋จผ์ ๊ฒฐ์ ํ๊ณ ๊ทธ ์ฐ์ ์์๊ฐ ๋์ ์๋ฆฌ๋จผํธ๊ฐ ๋จผ์ ๋๊ฐ๋ ์๋ฃ๊ตฌ์กฐ
๋ฌธ์ ์์๋ ๊ฐ์๊ฐ ๊ฐ์ฅ ์ผ์ฐ ๋๋๋ ๊ฐ์์ค์ด ์ฐ์ ์์๋ก ๋ฐฐ์ ๋์ด์ผ ํจ(PriorityQueue Default)
๊ฐ์์ start์ end๋ฅผ int[]๋ก ์ ๋ ฅ๋ฐ์ ์ ์ฅ.๋๋๋ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ ์ ์ ๋ ฌ.์ฒซ ๋ฒ์งธ ์์์ endTime์ ํ์ ๋จผ์ ๋ฃ๊ณ , ๋ฐ๋ณต๋ฌธ ์ํํ์ฌ ๊ฐ์ฅ ์ผ์ฐ ๋๋๋ ๊ฐ์ ์๊ฐ(time.peek())์ด ๋น๊ตํ๋ ๊ฐ์์ ์์ ์๊ฐ(lectures[i][0]) ๋ณด๋ค ํฌ๋ค๋ฉด ๊ฐ์ ์งํ ๊ฐ๋ฅ.์ด ๊ฒฝ์ฐ, ํด๋น ๊ฐ์์ค์ endTime์ ์ฌ ์ค์ ํด์ฃผ์ด์ผ ํ๋ฏ๋ก pollํ ํ ๋ค์ offer ์ํ์ต์ข ์ ์ผ๋ก ๊ฒฐ๊ณผ๊ฐ์ธ ํ์ ์ฌ์ด์ฆ๋ฅผ ์ถ๋ ฅ
์ฝ๋
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] lectures = new int[N][2];
for(int i =0 ; i< N ; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
lectures[i][0] = Integer.parseInt(st.nextToken());
lectures[i][1] = Integer.parseInt(st.nextToken());
}
Arrays.sort(lectures, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if(o1[0] == o2[0]) return o1[1] - o2[1];
return o1[0] - o2[0];
}
});
PriorityQueue<Integer> time = new PriorityQueue<>();
time.offer(lectures[0][1]);
for(int i = 1; i<lectures.length ; i++) {
if(time.peek() <= lectures[i][0]) time.poll();
time.offer(lectures[i][1]);
}
System.out.println(time.size());
}
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Greedy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ์ฌ]1828๋ฒ ๋์ฅ๊ณ (java) (0) | 2021.08.17 |
---|---|
[๋ฐฑ์ค] 2839๋ฒ ์คํ๋ฐฐ๋ฌ(java) (0) | 2021.08.17 |