728x90
SMALL
import sys; input=sys.stdin.readline
n = int(input())
info = [[0] * 3 for _ in range(n)]
parts = [0] * n
for _ in range(n):
start, end, part = map(int, input().split())
info[_][0] = start
info[_][1] = end
info[_][2] = part
info.sort()
for i in range(n):
start_time = info[i][0]
parts[i] = info[i][2]
for j in range(i):
if info[j][1] <= start_time:
parts[i] = max(parts[i], parts[j] + info[i][2])
print(max(parts))
- 그리디 + DP를 이용하여 최대 회의 인원을 갱신하였습니다.
- 회의들을 시작 시간 순으로 정렬함으로써, 각 회의마다 이전 회의들끼리 겹치는지를 조사하였습니다.
- 문제에서는 회의 수가 최대 25개이기에 이중 for문을 사용했지만, 회의 수가 늘어남에 따라 bisect 모듈로 시간 복잡도를 줄여볼 수 있겠습니다.
728x90
LIST
'알고리즘 문제 > 랜덤 마라톤 (solved.ac)' 카테고리의 다른 글
🥉 13235번: 팰린드롬 (0) | 2024.07.03 |
---|---|
🥈 26085번: 효구와 호규 (Easy) (0) | 2024.07.02 |
🥈 4096번: 팰린드로미터 (0) | 2024.06.28 |
🥈 14646번: 욱제는 결정장애야!! (0) | 2024.06.27 |
🥈 11931번: 수 정렬하기 4 (2) | 2024.06.27 |