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

 

2170번: 선 긋기

첫째 줄에 선을 그은 횟수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y (-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다.

www.acmicpc.net

 

 

문제 풀이

- 두 가지 값이 주어지면 왼쪽에서 오른쪽으로 선을 그을 수 있다. 

- 중복되는 선은 제외하고 총 선의 길이를 구해준다.

- 선이 이어지는지 최대값과 비교하면서 확인한다.

- 다음 선으로 넘어가면서,  이전에 그었던 선의 (도착점의 최대위치-시작점의 최소 위치) 길이를 더해준다.

import sys

input = sys.stdin.readline
N = int(input())
lines = list(tuple(map(int, input().split())) for _ in range(N))
lines.sort()

left = lines[0][0]
right = lines[0][1]
total = 0

for idx in range(1, N):
    key, value = lines[idx]

    if key < right:
        right = max(value, right)
    else:
        total += right - left
        left, right = key, value

total += right - left
print(total)

+ Recent posts