1931 - 회의실 배정
info
- 문제 보기: 1931 - 회의실 배정
- 소요 시간: 💥1시간 초과
- 풀이 언어:
python - 체감 난이도: 3️⃣~4️⃣
- 리뷰 횟수: ✅
풀이 키워드
스포주의
그리디
풀이 코드
info
- 메모리: 51900 KB
- 시간: 200 ms
import sys
input = sys.stdin.readline
def solution():
n = int(input())
data = []
for _ in range(n):
s, t = map(int, input().split())
data.append((s, t))
# 끝 시간 - 시작 시간 순 정렬
# ex) 4 4 / 1 4 이렇게 입력되면 1 4 / 4 4 로 정렬하도록
data.sort(key=lambda x: (x[1], x[0]))
ans = 1
st = data[0][1] # start time
for i in range(1, n):
if st <= data[i][0]:
st = data[i][1]
ans += 1
print(ans)
if __name__ == '__main__':
solution()
다빈치코딩 알고리즘에서 단계별로 잘 설명해놓음.
기본적인 발상은 이러하다.
- (⭐중요⭐) 최대한 남은 시간을 많이 확보하면서 회의를 선택하는 것이 유리하다.
- 종료 시간이 같은 회의 중에서는 시작 시간이 가장 빠른 순으로 선택해야 한다.
그래서 1과 2를 코드로 옮기자면, 입력 데이터를 끝나는 시간 - 시작 시간 순으로 오름차순 정렬해야 한다.