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 |