알고리즘

백준 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)
반응형