https://www.acmicpc.net/problem/1931
1. 회의 시간을 받은 뒤에 끝나는 시간을 기준으로 정렬해줍니다.
예시의 경우 아래와 같이 정렬이 됩니다.
meeting_sort = sorted(meeting, key=lambda x: [x[1], x[0]])
meeting_sort
[(1, 4),
(3, 5),
(0, 6),
(5, 7),
(3, 8),
(5, 9),
(6, 10),
(8, 11),
(8, 12),
(2, 13),
(12, 14)]
2. 처음 회의 시작 시간을 0으로 시작 (start = 0) 합니다.
다음 번 회의 시작 시간이 이전 번 회의가 끝나는 시간보다 크거나 같아야 하기 때문에,
이 점을 유의하면서 코드를 정의해줍니다.
cnt = 0 #가능한 회의 개수
start = 0 #처음 시작 가능한 시간
for times in meeting_sort: #정렬된 회의 시간 for loop
if times[0] >= start: #회의가 시작 가능한 경우
start = times[1] #다음 번 회의가 시작 가능한 시간을 업데이트
cnt += 1 #회의 개수 +1
print(cnt)
전체 코드는 다음과 같습니다.
n = int(input())
meeting = [tuple(map(int, input().split())) for _ in range(n)]
meeting_sort = sorted(meeting, key=lambda x: [x[1], x[0]])
cnt = 0
start = 0
for times in meeting_sort:
if times[0] >= start:
start = times[1]
cnt += 1
print(cnt)
'Algorithm' 카테고리의 다른 글
[파이썬] 백준 1927번, 11279번, 11286번: 최소 힙, 최대 힙, 절대값 힙 (0) | 2021.07.06 |
---|---|
[파이썬] 백준 1676번: 팩토리얼 0의 개수 (0) | 2021.07.05 |
[파이썬] 프로그래머스: 모의고사 (0) | 2021.07.04 |
[파이썬] 백준 11399번: ATM (0) | 2021.07.01 |
[파이썬] 백준 11047번: 동전 0 (0) | 2021.07.01 |