#회의실 배정
n = int(input()) #회의의 수
meeting = []
for _ in range(n):
x, y = map(int, input().split(' '))
meeting.append((x, y))
meeting.sort(key = lambda x : (x[1], x[0]))
cnt = 1
end = meeting[0][1]
for i in range(1, n):
if end > meeting[i][0]:
pass
else:
end = meeting[i][1]
cnt += 1
print(cnt)
일단, 회의의 최대 개수를 구해야하는데, 그럼 가장 빠르게 끝나야 더 많은 회의를 할 수가 있기 때문에,
끝나는 시간을 오름차순으로, 그 후 시작 시간을 오름차순으로 해주었다.
이렇게 정렬을 해준 후, 회의가 끝난 시간과 다음 회의의 시작시간을 비교해주며 수를 세주었다.
회의의 수를 세어주는 부분을 더 간단하게 하는 법이 있었다.
cnt = end = 0
for i, j in meeting:
if i >= end:
cnt += 1
end = j
print(cnt)
굿!
+) 다른 코드를 보니 x[0], x[1]순으로 정렬해준 코드가 있었다.
n = int(input())
meeting = []
for i in range(n):
x, y = map(int, input().split(' '))
meeting.append((x,y))
meeting = sorted(meeting, key = lambda x : x[0])
meeting = sorted(meeting, key = lambda x : x[1])
cnt = end = 0
for i, j in meeting:
if i >= end:
cnt += 1
end = j
print(cnt)
위 코드와의 차이로는, 위에서는 lambda x : x[1], x[0] 으로 해주며 x[1]이 동일한 경우 x[0]을 오름차순 정렬하는 것
이 코드 같은 경우는 x[0]으로 이미 정렬을 해주고, 그 다음 x[1]로 정렬을 해준다.
이 문제 같은 경우에는 시간이 꽤나 많이 걸리는 편이였는데, 시간을 줄이는 법은 아직 잘 모르겠다,,
참고한 사이트)
suri78.tistory.com/26
반응형