반응형
문제
https://www.acmicpc.net/problem/1931
코드
import sys
input = sys.stdin.readline
n = int(input())
res = []
for i in range(n):
a, b = map(int, input().split())
res.append((a,b))
res.sort(key=lambda x: (x[1],x[0]))
cnt = 0
end_time = 0
for i,j in res:
if i >= end_time:
cnt += 1
end_time = j
print(cnt)
설명
우선 각 값을 입력받고, key를 이용해서 sort를 해준다.
회의가 빠르게 끝날수록 더 많은 회의를 배정 가능하므로,
x[1]을 우선으로 sort 하여 종료시간이 빠른 순으로 우선 정렬하고,
그 이후 시작시간을 기준으로 정렬하게 된다면,
시작 시간이 빠르고 종료 시간이 빠른 순으로 정렬된다.
이후 정렬된 res 리스트를 반복문으로 돌며,
i가 종료시간보다 크면 카운트를 하나 늘리고 종료 시간을 j로 설정해 준다.
이후 정답을 출력한다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 11050: 이항 계수 1 (0) | 2023.02.27 |
---|---|
[파이썬, Python] 백준 2609: 최대공약수와 최소공배수 (0) | 2023.02.24 |
[파이썬, Python] 백준 11047: 동전 0 (0) | 2023.02.22 |
[파이썬, Python] 백준 1037: 약수 (0) | 2023.02.21 |
[파이썬, Python]] 백준 5086: 배수와 약수 (0) | 2023.02.20 |