https://www.acmicpc.net/problem/2170
문제 풀이
- 두 가지 값이 주어지면 왼쪽에서 오른쪽으로 선을 그을 수 있다.
- 중복되는 선은 제외하고 총 선의 길이를 구해준다.
- 선이 이어지는지 최대값과 비교하면서 확인한다.
- 다음 선으로 넘어가면서, 이전에 그었던 선의 (도착점의 최대위치-시작점의 최소 위치) 길이를 더해준다.
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)
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 2910번 빈도정렬 (1) | 2023.04.11 |
---|---|
[백준] 1744번 수묶기 (0) | 2023.04.08 |
[백준] 11501번 주식 (0) | 2023.04.08 |
[백준] 1541번 잃어버린 괄호 (0) | 2023.04.08 |
[백준] 9996번 한국이 그리울땐 서버에 접속하지 (0) | 2023.04.07 |