일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- DFS
- pixelshuffle
- EDSR
- 8puzzle
- convolution
- a*
- 신경망
- SRCNN
- AStar
- 동적계획법
- PYTHON
- deeplearning
- BFS
- 준지도학습
- NeuralNetwork
- sr
- residualnetwork
- 합성곱
- CNN
- 딥러닝
- leetcode
- RESNET
- 비지도학습
- residuallearning
- Increasing Triplet Subsequence
- superresolution
- 지도학습
- 증가하는부분수열
- MDSR
Archives
- Today
- Total
이것저것 코딩하는 블로그
[Algorithm] 회의실 배정 (Meeting room) 본문
0. 문제
link: https://www.codetree.ai/missions/6/concepts/35/problems/scheduling-meeting-room/introduction
코드트리
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
하나의 회의실이 있고, n개의 회의 요청이 들어왔다. 각 회의의 시작 시간과 끝 시간이 주어져 있으며, 한 회의가 시작되면 도중에 그만둘 수 없고, 한 회의가 끝나는 직후에 동시에 다른 회의가 시작될 수 있다. 적절하게 회의 요청을 수락하여 최대로 많은 회의가 진행되도록 만들어보자.
이 문제는 회의 끝 시간을 기준으로 정렬하여 가장 빨리 끝나는 회의 중 겹치지 않는 회의를 선택하는 그리디 알고리즘으로 접근한다. 회의 끝 시간을 기준으로 정렬하면, 끝나는 시간이 k인 가장 앞선 회의보다 이후 k'시간 에 끝나는 회의를 선택했을 때, 앞으로 회의에 추가적으로 사용할 수 있는 시간이 항상 더 짧아지기 때문이다. 따라서 항상 일찍 끝나는 회의를 그리디하게 선택하는 것이 최적의 답이다.
2. 구현
n = int(input())
time = [[0, 0] for _ in range(n)]
for i in range(n):
tmp = input().split()
start, end = int(tmp[0]), (int)(tmp[1])
time[i][0] = start
time[i][1] = end
time.sort(key=lambda x:x[1])
res = [time[0]]
idx = 0
for i in range(n):
if res[idx][1] <= time[i][0]:
res.append(time[i])
idx += 1
print(len(res))
'Algorithm > Greedy' 카테고리의 다른 글
[Algorithm] Fractional Knapsack (0) | 2021.10.12 |
---|