알고리즘/백준

[Python] 백준(BOJ): 1931 회의실 배정

soheeeeP 2021. 10. 24. 23:27

문제

 

1931번: 회의실 배정

(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.

www.acmicpc.net


풀이

 

a.  오답 및 시간 초과

import sys

n = int(input())
data = []
for i in range(n):
    data.append([j for j in map(int, sys.stdin.readline().split())])

# 회의 시간이 짧은 순으로 정렬했음 -> 이러면 회의를 최대 갯수만큼 할 수 있을 거라고 생각했는데
# 반례 n=3, data = [[3,5],[1,4],[4,8]]
data.sort(key=lambda x: x[1] - x[0])

# 회의실 사용 여부
_usage = [0 for i in range(max(x[1] for x in data) + 1)]

answer = 0
time = 0
for x in data:
    if 1 not in _usage[x[0]:x[1]]:
        answer += 1
        for i in range(x[0], x[1]):
            _usage[i] = 1
        if x[0] == x[1]:
            _usage[x[0]] = 1

print(answer)

b.  풀이

import sys

n = int(input())
data = []
for i in range(n):
    data.append([j for j in map(int, sys.stdin.readline().split())])

data.sort(key=lambda x: (x[1], x[0]))

answer = 0
time = 0
for x in data:
    if time <= x[0]:
        time = x[1]
        answer += 1

print(answer)