백준 1931번 회의실 배정

highway92·2021년 9월 9일
0

백준

목록 보기
1/27

문제출처 : https://www.acmicpc.net/problem/1931

풀이

그리디 알고리즘을 이용하여 해결하는 문제이다.

고려사항
1. 회의실이 1개라는 것에 주목하여야 한다.
2. 최대한 많은 회의를 하기 위해선 회의가 빨리 끝나는 순서대로 진행해야 한다.
3. 회의가 끝나는 시간이 동일하다면 먼저 시작하는 회의를 택한다.

필자는 3번 조건을 늦게 깨달아서 채점 99%에서 맞왜틀을 많이 시전했다.

import sys

n = int(input())
def solve(n):
    data = []
    for i in range(n):
        s,e = map(int,sys.stdin.readline().split(" "))
        data.append((s,e))
    
    count = 0 # 최종적으로 사용될 회의실 수
    endtime = -1 # for 문을 반복하며 체크해줘야 하는 회의끝나는 시간
    data = sorted(data,key=lambda x:(x[1],x,[0]))
    # 정렬기준을 첫 번째는 회의가 끝나는 시간, 두번째를 회의 시작시간으로 하여 3번 고려사항을 고려하였음.
    for i in range(len(data)):
        start = data[i][0]
        end = data[i][1]
        
        if start >= endtime:
            endtime = end
            count +=1
            
    return print(count)

solve(n)
profile
웹 개발자로 활동하고 있습니다.

0개의 댓글