[백준] 2170번 선 긋기

거북이·2023년 9월 10일
0

백준[골드5]

목록 보기
71/82
post-thumbnail

💡문제접근

  • 테스트케이스 예제를 보면 1 ~ 5까지 한 번에 그을 수 있고 6 ~ 7까지 그어서 총 선분의 길이가 5가 나오는 것을 알 수 있다.
  • 선분이 겹치는 경우와 선분이 겹치지 않는 경우를 구분해서 선분의 총 길이를 구한다.

💡코드(메모리 : 187700KB, 시간 : 4272ms)

import sys
input = sys.stdin.readline

N = int(input())
result = 0
arr = []
for _ in range(N):
    x, y = map(int, input().strip().split())
    arr.append([x, y])
arr.sort()
start = arr[0][0]
end = arr[0][1]

for i in range(1, N):
    # 겹치는 경우
    # 1 3
    # 2 5
    # 3 5 → start = 1, end = 5
    if arr[i][0] <= end <= arr[i][1]:
        end = max(end, arr[i][1])
    # 겹치지 않는 경우 → 겹치는 선분의 길이를 구해서 더한다.
    # 6 7
    elif arr[i][0] > end:
        result += end - start
        # start : 6, end : 7
        start = arr[i][0]
        end = arr[i][1]
result += end - start
print(result)

💡소요시간 : 31m

0개의 댓글