자료구조, 알고리즘/그리디
[백준] 1931 회의실 배정(그리디) - Python
개른
2023. 4. 7. 16:53
https://www.acmicpc.net/problem/1931
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net
import sys
N = int(sys.stdin.readline())
ans = 1
time = [list(map(int, sys.stdin.readline().split())) for _ in range(N)]
time.sort(key=lambda x: x[0]) # 시작 시간 정렬
time.sort(key=lambda x: x[1]) # 끝나는 시간 정렬
end_time = time.pop(0)[1] # 첫 번째 리스트에 있는 원소 빼서 종료시간 end_time에 저장
while time:
s, e = time.pop(0) # time 리스트원소가 있으면 s,e 에 첫 번째 원소 빼서 시작시간, 끝나는시간 저장
if end_time <= s: # 그 다음 회의의 시작시간이 그 전 타임의 끝나는 시간과 같거나 크면
end_time = e # end_time을 해당 회의시간으로 초기화해주고
ans += 1 # 정답 + 1 해주기
print(ans)
- 접근방식: 회의들의 시작시간, 끝나는 시간을 정렬해주고 차례대로 비교하기. 첫 번째 회의시간에 끝나는 시간을 저장하고 그 다음 시간의 시작시간들을 비교.
- 느낀점: lamda 사용법과, 결국 시작시간, 끝나는 시간을 정렬해주면 차례대로 비교만 하면 쉽게 풀리는 문제이다.
