Algorithm
백준 알고리즘 파이썬(Python) 1931번 회의실 배정
🤖 Play with Android 🤖
2021. 4. 11. 14:22
728x90
이 문제의 핵심은 바로
한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다
바로 이부분이다.
즉 (1,3)(3,3) 의 입력값이 들어왔을때 (3,3)이 먼저 배열된다면 (1,3)은 count에서 빠져 치명적인 오류가 될 수 있다는 것이다 그래서 시작하는 시간을 오름차순으로 먼저 배열하고 그 다음 끝나는 시간을 다시 오름차순으로 배열하는 것이 중요하다.
n = int(input())
array = []
for i in range(n):
start, end = map(int, input().split()) #map 은 함수와 리스트를 인자로 받는다. 리스트로부터 원소를 하나씩 받아 함수를 적용해 새로운 리스트로 작성
array.append((start,end)) # (start,end) 이렇게 괄호로 묶어주어한다.
array = sorted(array, key = lambda a : a[0]) #우선 시작 시간으로 오름차순 배열을 한다. sorted 는 기본적으로 오름차순.
array = sorted(array, key = lambda a : a[1]) #그 다음 끝나는 시간을 내림차순으로 배열한다.
endtime = 0
count = 0
for i in array:
if i[0] >= endtime:
endtime = i[1]
count += 1
else:
continue
print(count)
처음에 끝나는 시간만 고려했다가 안풀려 고생했던 문제....