이숭간 공부기록
백준 1931번 파이썬 _ 회의실 배정 (실버2) 본문
728x90
- 문제유형 : 그리디, 정렬
- 문제풀이
- 회의가 겹치지 않으면서 최대수를 구해야하므로 끝나는시작이 빠를수록, 끝나는 시작이 같다면 시작하는 시간이 빠를수록 해당 회의를 선택하는것이 최대의 회의개수를 만들수 있다.
- 시작시간으로도 한번더 정렬해줘야 하는 이유는 시작시간과 종료시간이 같은 회의일경우 count를 해줘야하기 때문이다.
- 현재일의 시작시간이 이전일의 종료시간보다 크면 count를 증가시킨후, 종료시간을 현재일의 종료시간으로 갱신한다.
- 회의가 겹치지 않으면서 최대수를 구해야하므로 끝나는시작이 빠를수록, 끝나는 시작이 같다면 시작하는 시간이 빠를수록 해당 회의를 선택하는것이 최대의 회의개수를 만들수 있다.
- 정답코드
import sys
input = sys.stdin.readline
n = int(input())
input_list = []
check = []
for i in range(n):
input_list.append(tuple(map(int, input().split())))
input_list.sort(key=lambda x: (x[1], x[0]))
count = 1
end_time = input_list[0][1]
for i in range(1,n):
if input_list[i][0] >= end_time: #지금일이 시작시간이 앞의일의 종료시간보다 크거나 같으면 선택가능이므로
count += 1
end_time = input_list[i][1] #종료시간을 현재일의 종료시간으로 갱신
print(count)
'알고리즘 > 백준' 카테고리의 다른 글
백준 14499번 파이썬 _ 주사위굴리기 (삼성SW기출) (0) | 2021.04.01 |
---|---|
백준 3190번 파이썬 _ 뱀 (삼성sw기출) (0) | 2021.03.31 |
백준 11724번 파이썬 _ 연결요소의 개수 (실버2) (0) | 2021.03.24 |
백준 7576번 파이썬 _ 토마토 (실버1) (0) | 2021.03.24 |
백준 7662번 파이썬 _ 이중 우선순위 큐 (0) | 2021.03.22 |