728x90
https://www.acmicpc.net/problem/1931
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net
그리디 알고리즘 문제로 리스트 정렬의 키를 지정할 수 있으면 쉽게 풀 수 있습니다.
def solution(N, data_list):
# 시작시간에 맞추면 최대 회의수를 구할 수 없음
# 1~4, 2~3, 3~4 가 있으면 1~4 는 1번 2~3, 3~4 는 2번
# 끝나는 시간에 맞춰 정렬해야 한다
# 끝나는 시간이 1순위, 시작시간이 2순위로 정렬
data_list = sorted(data_list, key=lambda x:(x[1], x[0]))
# 끝나는 시간
end = 0
# 데이터 인덱스
idx = 0
# 회의 수
count = 0
while True:
# 총 회의 탐색 리스트를 벗어나면
if idx >= len(data_list):
return count
# 회의 시작시간이 전 끝나는시간보다 길면
if data_list[idx][0] >= end:
# 끝난 시간 최신화
end = data_list[idx][1]
# 회의 횟수 + 1
count += 1
# 인덱스 하나 뒤로
idx += 1
# 아니면
else:
idx += 1
N = int(input())
data_list = [list(map(int, input().split())) for _ in range(N)]
print(solution(N, data_list))
728x90
'Coding Test > BaekJoon_Python' 카테고리의 다른 글
백준 2217 <로프> Python (0) | 2023.11.08 |
---|---|
백준 1026 <보물> Python (0) | 2023.11.08 |
백준 11047 <동전 0> Python (0) | 2023.11.07 |
백준 10844 <쉬운 계단 수> Python (0) | 2023.11.05 |
백준 14501 <퇴사> Python (0) | 2023.11.05 |