728x90
반응형
문제요약 (1931. 회의실 배정)
한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.
그리디 알고리즘을 사용해야한다는 생각을 반드시 해야한다.
풀이를 위한 부연 설명
- 회의실은 끝내는 시간을 기준으로 정렬한다.
- 또한 같은 시간이면 회의시간이 짧은 시간이 좋다. 즉, 회의 첫 시작이 앞에 있는 것이 좋다.
- 다음 회의를 위해서는 회의 첫 시작 시간이 회의 끝나는 시간이어야합니다.
- 그리디에 대한 자세한 개념 설명과 연관 문제는 다음 링크를 참고하면 된다.
코드
import sys
input = sys.stdin.readline
n = int(input())
table = [[0]*2 for _ in range(n)]
for i in range(n):
start, end = map(int, input().split())
table[i][0] = end
table[i][1] = start
table.sort()
cnt = 0
end = -1
for i in range(n):
if table[i][1] >= end:
end = table[i][0]
cnt += 1
print(cnt)
기억할 점
- 정렬 기준을 생각해야한다.
반응형
'코딩 테스트 > 파이썬 문제 풀이' 카테고리의 다른 글
[백준] 1918번 파이썬 - 스택 (1) | 2024.01.27 |
---|---|
[백준] 16113번 파이썬 - 문자열, 구현 (1) | 2024.01.25 |
[백준] 11286번 파이썬 - 우선순위 큐 (0) | 2024.01.19 |
[백준] 2252번 파이썬 - 위상 정렬 (0) | 2024.01.19 |
[백준] 1976번 파이썬 - BFS (유니온파인드) (0) | 2024.01.17 |