접근 핵심 :

  •  빨리 끝나는 회의 순서대로 정렬을 해야 한다 -> 빨리 끝날수록 뒤에서 고려할 수 있는 수가 많아짐
  • 정렬 시 sort(list, key = lambda x : x[n])를 사용할 수 있음 -> 기준을 여러 개 적용해서 한번에 정렬할 수도 있음 sort(list, key = lambda x : (x[m], a[n]))  *key에 여러 인자를 준다

 

이건 알겠는데

 

이렇게 해도

 

이렇게 해도

 

왜 계속

3이 나오는겨

 

4나와야 되는데

뭐가 문제지

 

 


요게 문제였다.

끝나는 시간을 기준으로 우선 정렬해주고, 끝나는 시간이 같은 경우를 위해 시작 시간을 그 다음으로 정렬해주어야 하는데, 그렇게 해줄려면 x[1], x[0] <- 이 순서가 되어야 하는게 맞다.

이렇게 고쳐줌

 

n = int(input())
time = []

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

time.sort(key = lambda x: (x[1], x[0])) #끝나는 시간을 기준으로 먼저 정렬

count = 1
last_end = time[0][1]
for i in range(1, n):
    if time[i][0] >= last_end:
        count += 1
        last_end = time[i][1]

print(count)

 

 


참고 :

https://hei-jayden.tistory.com/33

 

[백준 파이썬] # 1931 회의실 배정

Siver II # 1931 회의실 배정 그리디 알고리즘 유형 링크 : https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 N = int(input()) time = [] for i in range(

hei-jayden.tistory.com

고로 이 블로그에 나온 코드에서 람다 부분 정렬 순서를 바꿔주어야 한다. (백준 제출도 해봤는데 이게 맞음)

헷갈릴 여지가 있으니 이거보다는 밑의 블로그를 참고하는 것이 더 좋을 듯하다.

 

https://suri78.tistory.com/26

 

[백준알고리즘] 1931번: 회의실배정 -Python

[백준알고리즘] 1931번: 회의실배정 -Python https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 아랫부분에 새로 푼 방식의 풀이도 추가했다. 이번

suri78.tistory.com

 

해안해