728x90
import sys

N = int(sys.stdin.readline())
nlist = [list(map(int, x.strip().split())) for x in sys.stdin.readlines()]
nlist.sort()

cumulative_length = 0
cumulative_right_point = -sys.maxsize

for current_left, current_right in nlist:
    if current_left >= cumulative_right_point:
        cumulative_length += (current_right - current_left)
    else:
        if current_right > cumulative_right_point:
            cumulative_length += (current_right - cumulative_right_point)
    cumulative_right_point = max(current_right, cumulative_right_point)
print(cumulative_length)
  • 포인트
    • input을 정렬하고(O(NlogN)) 좌측부터 우측으로 O(N)만 함
    • 이를 sweep line 기법이라 함
728x90

'Algorithm-Problems > 백준' 카테고리의 다른 글

[백준][2309] 일곱 난쟁이  (0) 2022.05.08
[백준][2178] 미로 탐색  (0) 2022.05.08
[백준][1978] 소수찾기  (0) 2022.05.08
[백준][1934] 최소공배수  (0) 2022.05.08
[백준][1929] 소수 구하기  (0) 2022.05.05

+ Recent posts