[BOJ] 1931: 회의실 배정

HJW·2022년 8월 25일
0
  • 2개의 요소를 받을 때 각각 리스트로 만들 수 없다 -> 2차원 배열로 만들어서 인덱싱하여 사용한다
  • 2차원 리스트 sort() ▶ 0번째 열로 오름차순 정렬 -> 같으면 1번째 열로 오름차순 정렬 -> ...(default)
  • table = sorted(table, key = lambda x: (x[1], x[0])) 원본을 변형시키지 않는다, 정렬 순서를 지정할 수 있다, 정렬된 결과를 출력한다
    -> 끝나는 시간으로 오름차순 정렬하고, 같을 경우 시작 시간으로 정렬한다. 끝나는 시간이 같을 경우 시작 시각이 빠를 수록 좋기 때문이다.
  • 2차월 배열 -> 정렬해야 할지 고민 해보기
  • 개수 셀 때 cnt 변수 쓰기

for i in range(n):
start, end = map(int, input().split())
table.append([start, end])
-> 입력을 받을 때 각 요소를 받은 후에 입력할 수 있다. 이후에 이 요소 변수를 활용할 수 있다.

import sys
input = sys.stdin.readline
-> 반복문으로 여러줄을 입력받는 상황에서 반드시 사용해야 시간초과가 발생하지 않는다.

import sys
input = sys.stdin.readline

# 회의수
n = int(input())

# 각 회의 시작 시각, 끝나는 시각
table = []

for i in range(n):
    start, end = map(int, input().split())
    table.append([start, end])

# 끝나는 시간의 오름차순 정렬 -> 시작 시간의 오름차순 정렬
table = sorted(table, key=lambda x: (x[1], x[0]))

# 배정할 수 있는 회의실 개수
cnt = 0
# 이전 end
last_end = 0

for start, end in table:
    if(start >= last_end):
        cnt += 1
        last_end = end

print(cnt)
profile
be passionate

0개의 댓글