[백준 2170] 선 긋기

박형진·2023년 4월 13일
0

https://www.acmicpc.net/problem/2170


1. 코드

import sys

N = int(sys.stdin.readline().rstrip())
lst = [tuple(map(int, sys.stdin.readline().rstrip().split())) for _ in range(N)]
lst.sort()
ans = 0

l, r = lst[0][0], lst[0][1]  # [l, r]
for curr_l, curr_r in lst[1:]:
    # 합쳐질 수 없음
    if curr_l > r:
        ans += r-l
        l, r = curr_l, curr_r
    # 하나의 라인으로 합침
    else:
        r = max(curr_r, r)
# 마지막 [l,r] 구간 더함
ans += r-l
print(ans)

2. 후기

스위핑 기법을 학습하기 좋은 기본 문제였다.

profile
안녕하세요!

0개의 댓글