서로 겹치지 않는 활동에 대해 종료시간이 빠르면 더 많은 활동을 선택할 수 있는 시간이 많아진다는 것
package 백준.sort;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class 회의실배정_1931 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int size = Integer.parseInt(br.readLine());
int[][] lessionRoom = new int[size][2];
int[] lessionCount = new int[size];
StringTokenizer st;
for(int i = 0; i < size; i++) {
st = new StringTokenizer(br.readLine());
int[] temp = {Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())};
lessionRoom[i] = temp;
}
Arrays.sort(lessionRoom, (o1, o2) -> {
if (o1[1] == o2[1]) {
return o1[0] - o2[0];
} else {
return o1[1] - o2[1];
}
});
for (int[] ints : lessionRoom) {
System.out.println(Arrays.toString(ints));
}
int max = 0;
int endLessionTime = 0;
for (int[] ints : lessionRoom) {
if (endLessionTime <= ints[0]) {
max++;
endLessionTime = ints[1];
}
}
System.out.println(max);
}
}
"""https://www.acmicpc.net/problem/1931"""
import sys
N = int(sys.stdin.readline())
time = []
for _ in range(N):
s,e = map(int, sys.stdin.readline().split())
time.append([s,e])
time.sort(key= lambda x: (x[1], x[0]))
e = 0
result = 0
for lession in time:
if lession[0] >= e:
e = lession[1]
result += 1
print(result)
Reference