하지만 이렇게 풀면 불필요한 코드(비교과정)이 생긴다.
next_start_time
)이 현재 회의의 종료시간(current_end_time
) 이 후에 있다면 회의의 개수에 하나를 더한다.(ans += 1
) 이렇게 풀면 위의 풀이보다 더 직관적이다.
시작 시간 리스트와 끝나는 시간 리스트를 따로 만들어야 할까?
아니면 리스트에 튜플 형태(시작시간, 끝나는 시간)로 넣어야할까?
큐를 사용해야할까 ?
import sys
input = sys.stdin.readline
N = int(input())
ans = 0
conferences = []
for _ in range(N):
start, end = map(int, input().split())
conferences.append((start, end))
conferences.sort(key = lambda x : (x[0], x[1]))
for idx, time_info in enumerate(conferences):
start_time, end_time = time_info
if idx == 0:
current_end_time = end_time
ans += 1
continue
if end_time < current_end_time:
current_end_time = end_time
continue
elif start_time >= current_end_time:
current_end_time = end_time
ans += 1
print(ans)
import sys
input = sys.stdin.readline
N = int(input())
conferences = []
for _ in range(N):
start, end = map(int, input().split())
conferences.append((start, end))
# 회의 종료 시간을 기준으로 오름차순 정렬하고 종료시간이 같다면 시작 시간을 기준으로 오름차순 정렬
conferences.sort(key = lambda x : (x[1], x[0]))
# 제일 먼저 끝나는 회의의 시작 및 종료 시간 저장
current_start_time = conferences[0][0]
current_end_time = conferences[0][1]
ans = 1
for i in range(1, N):
# 다음 회의의 시작 및 종료 시간
next_start_time, next_end_time = conferences[i]
# 다음 회의의 시작 시간이 현재 회의의 종료 시간보다 크다면 업데이트 및 회의 개수에 1을 더한다.
if next_start_time >= current_end_time:
current_start_time = next_start_time
current_end_time = next_end_time
ans += 1
print(ans)