728x90
반응형
링크: https://www.acmicpc.net/problem/1931
아이디어
- 끝나는 회의 순서대로 정렬해야 가장 많은 회의의 수를 알 수 있을듯?
- 빨리 끝나면 더 많은 회의를 할 기회가 많기 때문에 ㅇㅇ
- 회의 시작 시간과 끝나는 시간이 같은 경우도 있기 때문에 회의 시작 시간을 2순위로 정렬을 해줘야함
- 2, 2와 1, 2가 있으면 1, 2를 먼저 하면 2,2도 활 수 있지만 2,2을 먼저 해버리면 1, 2는 무시되버린다.
- sort 키에 람다를 활용해 정렬 기준 1순위로 끝나는 시간 2순위로 시작시간으로 정렬을 해준다
- 이 후 정렬된 배열을 가지고 for문을 돌아 시작할 수 있는 모든 회의를 구한다.
구현
import sys, heapq
input = sys.stdin.readline
n = int(input())
learn = [list(map(int, input().split())) for _ in range(n)]
learn.sort(key= lambda x : (x[1], x[0]))
cnt = 1
end_time = learn[0][1]
for i in range(1, n):
if learn[i][0] >= end_time:
cnt += 1
end_time = learn[i][1]
print(cnt)
마무리
- sort에 키값에 람다를 사용해 정렬 기준을 넣어줄 수 있다는 것은 알고 있었지만
- 2순위까지 지정할 수 있다는건 생소한 부분이였다.
- 이 부분 말고는 딱히 막힘없이 풀렸던 문제
728x90
반응형
'코테준비 > 백준' 카테고리의 다른 글
[백준] 9465번: 스티커 - Python (0) | 2023.10.08 |
---|---|
[백준] 11729번: 하노이 탑 이동 순서 - Python (0) | 2023.10.06 |
[백준] 1339번: 단어 수학 - Python (0) | 2023.09.27 |
[백준] 1783번: 병든 나이트 - Python (0) | 2023.09.23 |