https://www.acmicpc.net/problem/1931
회의실은 단 한 개, 회의 시간이 겹치지 않게 최대한 많은 회의를 해보자.
import sys
input = sys.stdin.readline
n = int(input())
times = sorted([list(map(int,input().rsplit())) for _ in range(n)])
answer = 0
for i in range(n):
index, temp = i, [(times[i])]
j = i + 1
while j < n:
start, end = times[index]
n_start, n_end = times[j]
if end > n_start:
j += 1
else:
temp.append((n_start, n_end))
index = j
j = index + 1
answer = max(answer, len(temp))
print(answer)
times = sorted([list(map(int,input().rsplit())) for _ in range(n)], key=lambda x: (x[1],x[0]))
회의가 끝나는 시간이 빠른 순으로 정렬해주었다.
➕ 끝나는 시간이 같은 경우엔 시작 시간이 빠른 순으로 정렬
start, end = times[0]
cnt = 1
for i in range(1, n):
n_start, n_end = times[i]
if end <= n_start:
start, end = n_start, n_end
cnt += 1
start, end
에 할당n_start, n_end
에 할당end <= n_start
start, end = n_start, n_end
🤓 한 줄 정리
현재 회의가 끝났을 때, 시작할 수 있는 회의가 있다면 카운트 해준다.
import sys
input = sys.stdin.readline
n = int(input())
times = sorted([list(map(int,input().rsplit())) for _ in range(n)], key=lambda x: (x[1],x[0]))
start, end = times[0]
cnt = 1
for i in range(1, n):
n_start, n_end = times[i]
if end <= n_start:
start, end = n_start, n_end
cnt += 1
print(cnt)