기타/코딩테스트
[Python] 백준 1931번 - 회의실 배정
lazy man
2023. 3. 20. 15:43
1. 문제정보
https://www.acmicpc.net/problem/1931
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net
2. 해결전략
- 중첩되는 조건 구현하기
- 중첩되었을 때 어떻게 해야 가장 많은 회의를 진행할 수 있을지 고민
- 회의시간을 오름차순으로 정렬하고 종료시간이 빠른 것부터 쌓아 나간다면 가장 많은 회의를 진행할 수 있을 거라는 생각
3. 코드
N = int(input())
schedule = []
for i in range(N):
schedule.append(list(map(int,input().split())))\
# 오름차순 정렬
schedule.sort()
result = []
for i in schedule:
input_start, input_end = i[0], i[1]
if len(result) == 0:
result.append([input_start, input_end])
continue
# 새로운 input이 중첩되는 경우
start, end = result[-1][0], result[-1][1]
if input_start >= start and input_start < end:
# 중첩이 되었을 때 종료 인덱스가 더 짧은 좌표를 기준으로 함
if input_end < end:
result[-1] = [input_start, input_end]
# 중첩되지 않는 경우 append
else:
result.append([input_start, input_end])
print(len(result))