알고리즘
백준 1931 파이썬
은세고화
2021. 11. 17. 12:30
반응형
https://www.acmicpc.net/problem/1931
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net
두 번의 정렬을 하면 된다. 끝나는 시간 기준으로 정렬을 하고 시작시간 기준으로 다시 정렬을 진행하면 된다.
파이썬의 경우 람다식으로 해결할 수 있다.
time.sort(key=lambda x: (x[1], x[0]))
이렇게 정렬한 후 입력값은 다음과 같이 바뀐다.
[(1, 4), (3, 5), (0, 6), (5, 7), (3, 8), (5, 9), (6, 10), (8, 11), (8, 12), (2, 13), (12, 14)]
정렬된 수를 보면 시작시간이 끝나는 시간보다 크거나 같은 수만 채택하면 된다.
n = int(input())
time = []
for i in range(n):
a, b = map(int, input().split())
time.append((a, b))
time.sort(key=lambda x: (x[1], x[0]))
start = count = 0
for i in time:
if i[0] >= start:
count += 1
start = i[1]
print(count)
반응형