SSONG Cloud
[백준] 11000 강의실 배정 본문
반응형
문제 출처: https://www.acmicpc.net/problem/11000
11000번: 강의실 배정
첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (1 ≤ Si < Ti ≤ 109)
www.acmicpc.net
1. 입력
: 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000)
: 이후 N개의 줄에 Si, Ti가 주어진다. (1 ≤ Si < Ti ≤ 109)
2. 출력
: 강의실의 개수를 출력하라.
3. 풀이
: 먼저 입력받은 수업의 시작시간과 종료시간을 저장할 수 있는 자료구조 Lesson을 만든다.
: Lesson을 저장할 수 있는 list를 만드는데 정렬시키기 위해 comparable을 구현한다.
: 정렬은 강의의 시작시간이 빠른 순으로 정렬하고 만약 시작시간이 같다면 종료시간이 빠른 순으로 정렬한다.
: 리스트를 순회하며 pq에 끝나는 시간을 저장할 수 있도록 한다.
: pq에는 Integer 값이 들어가 가장 작은 수부터 뱉어내기 때문에 지금까지 각 강의실에서 진행된 수업 중 가장 종료시간이 빠른 수업의 종료시간을 뽑아낼 수 있게 된다.
: 이렇게 해서 마지막에 pq에 남은 수업의 수가 답이 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class 강의실배정 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder sb = new StringBuilder();
static StringTokenizer st;
static class Lesson implements Comparable<Lesson>{
int start, end;
public Lesson(int start, int end) {
super();
this.start = start;
this.end = end;
}
@Override
public int compareTo(Lesson o) {
if(this.start != o.start) return this.start-o.start;
return o.end - this.end ;
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
int N = Integer.parseInt(br.readLine());
PriorityQueue<Integer> pq = new PriorityQueue<>();
List<Lesson> list = new ArrayList<>();
for(int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());
list.add(new Lesson(start, end));
}
Collections.sort(list);
for(int i = 0; i < N; i++) {
Lesson cur = list.get(i);
if(!pq.isEmpty() && pq.peek() <= cur.start) {
pq.poll();
}
pq.offer(cur.end);
}
System.out.println(pq.size());
}
}
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준] 14468 소가 길을 건너간 이유2 (0) | 2021.05.19 |
---|---|
[백준] 14467 소가 길을 건너간 이유 1 (0) | 2021.05.19 |
[백준] 21610 마법사 상어와 비바라기 (0) | 2021.05.16 |
[백준] 1339 단어 수학 (0) | 2021.05.16 |
[백준] 11501 주식 (0) | 2021.05.15 |
Comments