반응형
https://www.acmicpc.net/problem/1931
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net


이번 문제의 핵심은 어떻게 해야 가장 많은 개수의 회의를 넣을 수 있는지 아는 것이다.
나는 1. 일찍 끝나는 회의부터, 2. 종료 시간이 같다면 나중에 시작하는 회의 순으로 정렬시켰다.
코드
n = int(input())
s = []
for i in range(n):
first, second = map(int, input().split())
s.append([first, second])
s = sorted(s, key=lambda a: a[0])
s = sorted(s, key=lambda a: a[1])
last = 0
cnt = 0
for i, j in s:
if i >= last:
cnt += 1
last = j
print(cnt)
시작하는 시간에 대해 오름차순으로 정렬해주었고, 그 후 끝나는 시간에 대해 정렬해주었다.

정렬하는 부분까지는 문제가 없었으나, 정렬 후에 이전 회의가 끝나는 시간보다 늦게 시작하는 회의만 카운트 해주는 부분에서 좀 시행착오가 있었다. 처음에는 이전 회의 종료 시간보다 일찍 시작 하는 회의들을 배열에서 제거 해주고 남은 회의들 개수만 세는 식으로 하였는데 자꾸 런타임 에러가 나서 다른 방식으로 변경하였다.
for i, j in s: <--- i,j는 0,0부터 가 아니라 s 배열의 s[0][0] ~ s[11][11] 나타내는 것이다 (range in s 랑 헷갈리지 말 것 !)
반응형
'Algorithm > BOJ' 카테고리의 다른 글
| 백준 (BOJ) - 17219 비밀번호 찾기 [Python] (1) | 2023.12.30 |
|---|---|
| 백준 (BOJ) - 1260 DFS와 BFS [Python] (0) | 2023.02.13 |
| 백준 (BOJ) - 1764 듣보잡 [Python] (0) | 2023.01.23 |
| 백준 (BOJ) - 1541 잃어버린 괄호 [Python] (0) | 2023.01.19 |
| 백준 (BOJ) - 2110 공유기 설치 [Python] (0) | 2023.01.05 |