[김태원 알고리즘] 회의실 배정 (그리디)
사용 언어: Python3
문제
풀이
내 풀이
N = int(input())
lst = [list(map(int, input().split())) for _ in range(N)]
# ✅ 회의가 끝나는 시간 순으로 정렬 (빨리 끝나는 회의를 우선적으로 해야 최대한 많은 회의를 할 수 있음)
lst.sort(key=lambda x:x[1])
cnt = 1 # 맨 처음 회의는 무조건 할 수 있음
end = lst[0][1]
for i in range(1, N):
if lst[i][0] >= end:
cnt += 1
end = lst[i][1] # 끝나는 시간 업데이트
# 최대 수의 회의
print(cnt)
- 성공
다른 풀이
N = int(input())
lst = [list(map(int, input().split())) for _ in range(N)]
# 회의가 끝나는 시간 순으로 정렬 (빨리 끝나는 회의를 우선적으로 해야 최대한 많은 회의를 할 수 있음)
lst.sort(key=lambda x:(x[1], x[0])) # ✅ 차순위까지 설정 x[1]이 같으면 x[0] 순으로
cnt = 0 # 진행한 회의 수
end = 0 # 회의 종료시간 기록
for x in lst:
if x[0] >= end:
cnt += 1
end = x[1] # 끝나는 시간 업데이트
# 최대 수의 회의
print(cnt)
- 🌟
sort()
할 때, 차순위까지 설정하는 방법 알아두기!
💛 개인 공부 기록용 블로그입니다. 👻