Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- greedy algorithm
- 파이썬 풀이
- Python
- 알고리즘
- 백준 온라인 저지
- 그리디 알고리즘
- iOS개발
- Algorithm
- 알고리즘 공부
- 안드로이드 공부
- dfs
- Autolayout
- 백준온라인저지
- 정렬
- BFS
- swift
- 파이썬
- Android
- 공부
- 오토레이아웃
- error
- SwiftUI
- Clean Architecture
- UIKit
- Swift공부
- Level 1
- ios
- 프로그래머스
- 앱개발
- Kotlin
Archives
- Today
- Total
Tori의 개발 공부
[python] 1931번 - 회의실 배정 본문
문제
파이썬 풀이
최대 회의 수를 구하기 위해서는 회의시간이 짧은 즉 가장 빨리 끝나는 회의를 배정하면 된다. 계속해서 짧은 회의를 배정하여 사용할 수 있는 회의의 수를 늘리는 것이다.
따라서 회의가 끝나는 시간을 기준으로 살펴본다.
회의가 끝나는 시간이 현재 시간과 가장 가까운 회의를 배정하면된다.
import sys
input = sys.stdin.readline
N = int(input().rstrip())
time_list = []
for i in range(N) :
time_list.append(list(map(int, input().rstrip().split())))
time_list.sort(key=lambda x: (x[1], x[0]))
count = 0
last_time = 0
for start, end in time_list :
if last_time <= start :
count +=1
last_time = end
print(count)
입력받은 회의시간을 정렬해준다. 이때 정렬 기준은 끝나는 시간을 기준으로 하되 끝나는 시간이 같을 경우 두 번째 정렬 기준을 시작 시간으로 해주었다.
이미 가장 빨리 끝나는 시간 순으로 정렬을 해두었기 때문에 반복문을 돌면서 만나는 회의시간은 가장 최선의 시간이다.
따라서 현재 시간보다 시작 시간이 빠르지만 않으면 회의실을 배정할 수 있다.
last_time에 이 전의 회의가 끝난 시간을 기록해두어 현재 시간 역할을 해준다.
'Algorithm > 백준 문제풀이' 카테고리의 다른 글
[python] 11047번 - 동전 0 (0) | 2021.11.24 |
---|---|
[python] 13305번 - 주유소 (0) | 2021.11.24 |
[python] 1541번 - 잃어버린 괄호 (0) | 2021.11.23 |
[python] 2108번 - 통계학 (0) | 2021.09.08 |
[python] 18870번 - 좌표 압축 (0) | 2021.09.03 |