https://www.acmicpc.net/problem/2170
import sys
N = int(sys.stdin.readline())
input_list = []
line = []
for i in range(N):
a,b = map(int,sys.stdin.readline().split())
input_list.append((a,b))
input_list.sort()
start = input_list[0][0]
end = input_list[0][1]
ans = 0
for i in input_list:
if i==(start,end):
continue
if end>=i[1]:
continue
elif i[0]<=end<i[1]:
end = i[1]
elif i[0] > end:
ans+= end-start
start= i[0]
end=i[1]
ans += end-start
print(ans)
입력값을 양쪽 다 비교해야 답을 구할 수 있지만, 입력값을 담은 리스트를 정렬하면 시작점은 비교할 필요가 없다.
따라서 끝점의 크기만 비교해가면서 답을 구하면 된다.