백준 알고리즘 1931. 회의실 배정
2024. 3. 5. 23:53ㆍ코딩 테스트/백준
https://www.acmicpc.net/problem/1931
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net
전체 코드
def solution(meetings: list):
meetings.sort(key=lambda x: (x[1], x[0]))
count = 0
last_end = 0
for start, end in meetings:
if last_end <= start:
last_end = end
count += 1
return count
### submit ###
n = int(input())
meetings = []
for _ in range(n):
start, end = map(int, input().split(' '))
meetings.append((start, end))
print(solution(meetings))
여담
그리드 알고리즘을 써야하는 것을 알고 있고, 반례가 없는 케이스를 찾았다면 구현은 굉장히 단순해진다. 문제는 그리드 알고리즘을 ‘써야’하는지 파악하는 것과 반례가 되는 케이스가 없는지 조사하는게 생각보다 어렵다는 점이다.
가장 ‘많은’ 회의 개수를 구하기 위해 ‘왜’ end를 기준으로 오름차순 정렬을 하고 그리드 알고리즘을 진행하는지 이해해본다.
'코딩 테스트 > 백준' 카테고리의 다른 글
백준 알고리즘 - 2566. 최댓값 (0) | 2024.03.06 |
---|---|
백준 알고리즘 - 2563. 색종이 (0) | 2024.03.06 |
백준 알고리즘 - 11399. ATM (0) | 2024.03.05 |
백준 알고리즘 - 11047. 동전 0 (0) | 2024.03.05 |
백준 알고리즘 - 2231. 분해합 (0) | 2024.03.05 |