본문 바로가기

[BOJ] - Python

[백준] 1931 : 회의실 배정 python

 

1. N을 입력받는다.

2. 시작시간과 종료시간을 저장할 list인 data를 생성한다.
3. data에 (시작시간, 종료시간)의 형태로 회의시간을 저장한다.

4. data를 회의의 종료시간을 기준으로 오름차순 정렬한다.

5. 회의의 개수를 저장할 cnt를 0으로 초기화한다.

6. 회의의 종료시간을 저장하는 변수 end에 data[0][1]을 저장한다.(가장 빨리 끝나는 회의의 종료시간)

7. 가능한 회의의 개수를 센다.

    7-1. 현재 회의의 종료시간 <= 다음 회의 시작시간이라면 cnt를 증가시킨다.

    7-2. 회의의 종료시간을 다음 회의의 종료시간으로 업데이트한다.

 

import sys
input = sys.stdin.readline

n = int(input())
data = []
for i in range(n):
    d = tuple(map(int,input().split()))
    data.append(d)
data.sort(key=lambda x:(x[1],x[0]))

end = data[0][1]
cnt = 1
for i in range(1,len(data)):
    if end<=data[i][0]:
        cnt += 1
        end = data[i][1]
print(cnt)

 

처음에는 data를 정렬하는 부분에서 회의의 종료시간을 기준으로 정렬하기 위해 x:x[1]이라는 옵션만 줬었다.

그런데 종료시간이 같은 경우에는 회의의 시작 시간이 더 빠른 것을 기준으로 정렬한다는 옵션을 주지 않아 틀린 것으로 채점됐었다.

정렬하는 기준을 더 신중히 생각할 필요가 있는 것 같다.

'[BOJ] - Python' 카테고리의 다른 글

[백준] 13305 : 주유소 python  (0) 2023.08.13
[백준] 11399 : ATM python  (0) 2023.08.13
[백준] 11047 : 동전 0 python  (0) 2023.08.12
[백준] 1991 : 트리 순회 python  (0) 2023.08.10
[백준] 11279 : 최대 힙 python  (0) 2023.08.10