본문 바로가기

Algorithms and Languages/파이썬 알고리즘 문제풀이

[Python/백준] 1931. 회의실 배정

https://www.acmicpc.net/problem/1931

입력 : 회의의 수 N과 회의의 시작시간, 끝나는 시간

출력 : 사용할 수 있는 회의의 최대 개수


직관 및 접근

회의실 사용 표를 만들거임.
각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있음.
회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자.
시작 시간과 끝나는 시간 겹칠 수 있다.

=> 이거 GREEDY에서 배운 그 스케쥴링 문제

=> GREEDY로 풀기 전에, 우선 정렬이 필요함.


 

공부내용


풀이

1차 풀이(실패)

import sys
input = sys.stdin.readline

N = int(input()) # 11
print(N)

# I_list = [tuple(map(int, input().split())) for _ in range(N)]
# [(1, 4), (3, 5), ..., ]
# [(s1, t1), (s2, t2), ... 꼴]
# print(I_list)

I_dict = {}
for _ in range(N):
    temp = list(map(int, input().split()))
    I_dict[temp[0]] = temp[1]
# {1: 4, 3: 8, 0: 6, 5: 9, 6: 10, 8: 12, 2: 13, 12: 14}

I_dict = dict(sorted(I_dict.items(), key=lambda item: (item[1], item[0])))

print(I_dict)

2차 풀이

1