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)

처음에 끝나는 시간만 고려했다가 안풀려 고생했던 문제....

복사했습니다!