소스 코드
import sys
n = int(sys.stdin.readline())
input_list = [0 for _ in range(n)]
for i in range(n):
a, b = map(int, sys.stdin.readline().split())
input_list[i] = (a, b)
input_list.sort(key=lambda x : (x[0], x[1]))
count = 0
latest_meeting = (0, 0)
for i in range(n):
if input_list[i][0] >= latest_meeting[1]:
latest_meeting = input_list[i]
count += 1
if input_list[i][1] < latest_meeting[1]: # swap하는 거니깐 count X
latest_meeting = input_list[i]
print(count)
- 계속 시간 초과가 발생했던 문제...😭
- 이중 for 문을 사용하지 않아야 시간 초과가 발생하지 않음
주요 개념
- 시간을 줄이기 위한 방법
- input() 대신 sys.stdin.readline() 을 사용하는 것이 좋음
- 리스트를 안 쓸 수 있는 부분은 최대한 쓰지 말고 대신 변수 하나를 선언해서 할당하는 방법이 좋음
- 배열에 원소를 추가할 때 빈 리스트를 만들어 append() 로 추가하는 것보다 리스트의 길이를 미리 알 수 있다면, 0으로 리스트를 채우고 인덱스로 접근하는 것이 좋음