일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 그리디
- airflow architecture
- airflow webserver
- datacamp
- 백준 온라인 저지
- dsf
- 프로그래머스
- data_engineer
- Airflow
- telegram
- delete join
- Data Engineering
- Python
- MySQL
- docker container
- docker
- 알고리즘
- docker image
- 백준온라인저지
- 데이터 엔지니어
- leetcode
- BOT
- Dynamic Programming
- hackerrank
- Spark
- terraform
- Pseudo Lab
- 빅데이터를 지탱하는 기술
- 2023년 목표
- SQL
Archives
- Today
- Total
Lim Seunghyun Space
[백준 온라인 저지] 회의실 배정 본문
문제 출처
문제 요구사항
- N개의 회의에 대하여 회의가 겹치지 않게 사용할 수 있는 회의의 최대 개수 구하기
문제 아이디어
- 회의의 시작 시간이 빠른 순으로 정렬하여 문제를 해결하려면 아래와 같은 반례가 존재한다.
- [0, 24], [1, 12], [12, 24]
- 시작시간이 빠른 순으로 정렬해서 풀이를 한다면 [0, 24]만 선택하지만 [1, 12] [12, 24]을 선택하는 것이 최댓값이다.
- 회의의 진행 시간을 기준으로 정렬하여 문제를 해결하려면 아래와 같은 반례가 존재한다.
- [2. 5] [1, 12], [12, 24]
- 진행시간을 기준으로 정렬해서 풀이를 진행하면 [2. 5]만 선택하지만 [1, 12] [12, 24]을 선택하는 것이 최댓값이다.
- 회의의 종료 시간이 빠른 기준으로 정렬하여 문제를 해결해보는 방식으로 진행
- [0, 4] [0, 6] [6, 8] [4, 8] [4, 10] [10, 12] [12, 24]
- 여기서 하나의 선택 사항이 있는데 [6, 8] [4, 8] 은 끝나는 시간이 동일하지만 시작하는 시간이 다르다.
- 이전에서 [0, 4] 회의를 선택하고 이후의 [4, 8] [6, 8] 중에 선택을 하게 되는데 어느 것을 선택해도 끝나는 시간은 동일하고 최적의 해에도 영향이 미치지 않아 선택을 아무거나 해주어도 영향이 없다.
- 필자는 이후에 회의의 최대 개수를 구하면서 가능한 많은 회의 시간을 길게 갖게 만드는 최적의 해를 구하는 문제로도 응용이 가능할 수 있어 시작시간이 빠른 것부터 선택하도록 하였다.
- 전체 시간에서 종료 시간이 빠른 것을 선택하고 뺀 남은 회의 가능한 시간이 어느 회의를 선택하는 것보다 가장 길기 때문에 최적해를 보장할 수 있다.
문제 풀이 (Python3)
import sys
N = int(sys.stdin.readline().strip())
meets = []
for _ in range(N):
s_t, e_t = map(int, sys.stdin.readline().strip().split())
meets.append([s_t, e_t])
sorted_meets = sorted(meets, key = lambda x : (x[1], x[0]))
start_time = 0
answer = 0
for m in sorted_meets:
if start_time == 0 or m[0] >= start_time:
answer += 1
start_time = m[1]
print(answer)
- 종료 시간을 기준으로 정렬한 이후 그중에서 가장 빠르게 시작하는 걸 선택하기로 했으므로 sorted에서 key 값을 회의가 종료되는 시간과 시작되는 시간을 순서대로 주었다.
- 문제에서 종료 시간과 동시에 회의가 시작할 수 있도록 조건을 설정해주었다.
Github
728x90
'Algorithm > 문제' 카테고리의 다른 글
[백준 온라인 저지] 주유소 (0) | 2022.02.26 |
---|---|
[백준 온라인 저지] ATM (0) | 2022.02.12 |
[백준 온라인 저지] 로프 (0) | 2022.01.28 |
[백준 온라인 저지] 설탕 배달 (0) | 2022.01.24 |
[백준 온라인 저지] 진법 변환 (0) | 2021.12.30 |