[Python]1931번 - 회의실 배정

허창원·2023년 3월 1일
0
post-thumbnail
post-custom-banner

해설

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
= int(input())
List = []
for i in range(n):
    a, b = map(int, input().split())
    List.append((a, b)) # append 안에는 1개만 들어가므로 튜플로 List에 저장하면됨.
 
List = sorted(List, key = lambda x:(x[1],x[0]))
# 입력 순서가 (3,3) (1,3)일 경우 종료시간으로 정렬하면 [(3,3),(1,3)]이 된다.
# 그러므로 시작 시간의 오름차순으로 우선 정렬을 해야한다.
 
count = 1 # 회의 수
select = List[0][1# 첫 회의를 세야한다.
for i in range(1, n):
    if select <= List[i][0]:
        count += 1
        select = List[i][1]
print(count)
cs
1931번을 풀기위해 고민 중일 때 자료를 정리하는 방법으로 List = sorted(List,key = lambda x: x[1])을 기준으로 오름차순 정렬한 후 시작 시간과 끝 시간이 가까운 것을 비교해서 count를 1씩 늘리면 된다는 것까지는 생각해냈다. 하지만 List=sorted(List, key=lambda x: (x[1],x[0])) 이렇게 시작 시간 x[0]을 먼저 오름차순 정렬한 후 종료시간 x[1]을 정렬해주어야 한다는 방법을 생각해내지 못했다. 입력 순서가 (3,3) (1,3)일 경우 종료 시간으로만 오름차순 정렬을하면 답이 안나온다.
post-custom-banner

0개의 댓글