728x90
#1931
N = int(input())
time_list = []
for i in range(N):
start, end = map(int, input().split())
time_list.append([start, end])
time_list.sort(key=lambda a: a[0]) # 시작 시간을 기준으로 오름차순 정렬
time_list.sort(key=lambda a: a[1]) # 끝나는 시간을 기준으로 다시 오름차순 정렬
fin_time = 0 # 회의의 마지막 시간
count = 0 # 회의의 수
for i, j in time_list:
if i >= fin_time: # 시작시간이 회의의 마지막 시간보다 크거나 같을경우
count += 1 # counting 진행
fin_time = j # 마지막 시간 재설정
print(count)
이 문제는 그리디 알고리즘을 이용하여 푸는 문제이므로 지금 당장 최선의 경우를 찾아서 counting을 진행하는 방식을 이용했다. 최선의 경우를 찾기위해서 입력받은 time_list를 시작시간을 기준으로 오름차순 정렬을 했다. 그러나 이때는 시작시간이 이르지만 긴시간 회의를 해서 너무 늦게 끝나는 경우를 고려하지 못한다. 따라서 일찍 끝난 회의를 우선순위로 두어서 해당 회의 후에 다른 회의가 들어올 여유 공간을 두기위해 시작 시간을 기준으로 오름차순 정렬을 한 후에 끝나는 시간을 기준으로 다시 오름차순 정렬을 하여 두가지 조건을 적용하여 정렬을 진행하고 counting을 진행하였다.
728x90
'Sketch (Programming Language) > Python' 카테고리의 다른 글
Baekjoon Training #2738 (0) | 2023.01.05 |
---|---|
Baekjoon Training #1912 (0) | 2022.12.27 |
Baekjoon Training #24499 (0) | 2022.11.09 |
Baekjoon Training #2805 (0) | 2022.11.05 |
Baekjoon Training #1753 (0) | 2022.11.01 |