📖Problem

🔍Intuition

🔍Approach

  1. 문제에 필요한 회의의 수(n)와 회의의 시작과 끝의 정보가 주어진 리스트(meetings)를 입력받는다.
  2. meetings리스트에 있는 모든 회의를 끝나는 시간 기준으로 정렬한다. 만약 끝나는 시간이 같다면, 시작 시간 기준으로 정렬한다.(lambda 이용)
  3. meetings리스트의 시작값(start)과 끝값(end)을 반복하여 확인한다.
    1. 이때 시작하는 값이 마지막에 끝나는 시간(last_end_time)보다 같거나 크다면, 회의를 할 수 있기 때문에 개수를 1개 늘려준다(cnt += 1) 그 후, 회의가 마지막에 끝나는 시간을 현재 값의 끝나는 시간으로 업데이트해준다.
  4. 회의의 개수(cnt)를 출력한다.

🚩My submission

import sys
input = sys.stdin.readline

n = int(input())
meetings = [[0,0] for _ in range(n)]

for i in range(n):
    start, end = map(int, input().strip().split())
    meetings[i][0] = start
    meetings[i][1] = end

# 끝나는 시간을 기준으로 정렬, 끝나는 시간이 같으면 시작 시간을 기준으로 정렬
meetings.sort(key=lambda x: (x[1], x[0]))

cnt = 0
last_end_time = 0

for start, end in meetings:
    if start >= last_end_time:
        cnt += 1
        last_end_time = end
    
print(cnt)

⇒ $O(NlogN)$

ㅋㅋ이게 맞나..

ㅋㅋ이게 맞나..

<aside> 🚨 실패한 아이디어와 코드

</aside>