
import sys
input = sys.stdin.readline
N = int(input())
times = []
for _ in range(N):
s, e = map(int, input().split())
times.append((s, e))
times 리스트에 각 회의의 시작, 종료시간을 (시작, 종료) 형태로 삽입합니다.# 종료 -> 시작시간이 빠른 순 sort
times.sort(key=lambda x: (x[1], x[0]))
total = 1 # 가능한 회의 수
curr_finish = times[0][1] # 현재 회의가 끝나는 시간
times를 종료 시간이 이른 순으로 정렬합니다. 종료 시간이 이른 회의를 우선 선택하기 위해서입니다.sort 메서드의 key 변수에 튜플을 반환하는 함수를 넘기면, 정렬은 튜플의 첫 요소를 기준으로, 같을 경우 둘째 요소를 기준으로 이루어집니다.times[0]에는 종료시간이 제일 이른 회의가 저장되어 있겠죠. 일단 이 회의를 일정에 포함시킵니다.total을 1(현재 회의를 포함하므로)로 초기화하고,curr_finish에 저장합니다.
for s, e in times[1:]:
# 현재 회의가 끝남
if s >= curr_finish:
total += 1
curr_finish = e
print(total)
times의 각 원소를 순회하며 나머지 회의도 확인합니다.s >= curr_finish)total에 1을 더하고, 종료 시간을 새로운 회의의 종료시간으로 갱신합니다(curr_finish = e)🤔 종료 시간이 같을 때, 굳이 시작 시간을 기준으로 정렬하는 이유가 있나요?
[(2, 5), (2, 2), (0, 2)]인 경우, (0, 2) -> (2, 2) -> (2, 5) 순으로 진행할 수 있습니다.[(2, 2), (0, 2), (2, 5)]가 됩니다.(2, 2)를 선택하면, 둘째 회의 (0, 2)의 시작 시간이 첫 회의 2의 종료시간보다 빠르므로, (0, 2)가 정답에서 누락됩니다.if s (0) >= curr_finish (2)가 거짓이 되겠죠.[(0, 2), (2, 2), (2, 5)]가 됩니다.import sys
input = sys.stdin.readline
N = int(input())
times = []
for _ in range(N):
s, e = map(int, input().split())
times.append((s, e))
# 종료 -> 시작시간이 빠른 순 sort
times.sort(key=lambda x: (x[1], x[0]))
total = 1 # 가능한 회의 수
curr_finish = times[0][1] # 현재 회의가 끝나는 시간
for s, e in times[1:]:
# 현재 회의가 끝남
if s >= curr_finish:
total += 1
curr_finish = e
print(total)
for문으로 확인하며 .