반응형
https://www.acmicpc.net/problem/1931
두 번의 정렬을 하면 된다. 끝나는 시간 기준으로 정렬을 하고 시작시간 기준으로 다시 정렬을 진행하면 된다.
파이썬의 경우 람다식으로 해결할 수 있다.
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)
반응형
'알고리즘' 카테고리의 다른 글
백준 2636 치즈 자바 (0) | 2022.03.05 |
---|---|
백준 3085 파이썬 (0) | 2021.11.23 |
백준 1541 파이썬 (0) | 2021.11.18 |
백준 13305 주유소 파이썬 (0) | 2021.11.17 |
백준 1449 파이썬 (0) | 2021.11.17 |