본문 바로가기
알고리즘 (Python)

회의실 배정(그리디)

by ppirae 2022. 3. 26.

인프런 김태원님의 파이썬 알고리즘 문제풀이 강의를 듣고 작성한 글입니다.

https://inf.run/Uiep

 

파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의

파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런...

www.inflearn.com

고민을 했는데

가장 빨리 끝나는 회의를 계속 먼저 잡으면 될것 같다는 생각을 했으나

코드가 깔끔하게 나오지않아서 강의를 봤다.

 

#강의 풀이
n = int(input())
meeting = []
for i in range(n):
    s, e = map(int, input().split())
    meeting.append((s, e))

meeting.sort(key=lambda x: (x[1], x[0]))
print(meeting)

et = 0
cnt = 0
for s, e in meeting:
    if s >= et:
        et = e
        cnt += 1
print(cnt)

가장 빨리 끝나는 회의를 계속 먼저 시작하면 된다.

그러기 위해서는 정렬함수를 알아야한다.

sort의 key = lambda 함수 부분을 기억해두자

그리고 그 회의가 끝나는 시각을 end time = et로 잡고

다음 회의시작 시간이 et보다 크거나 같으면 

다음 회의로 cnt += 1 하면된다.

댓글