Open yu-heejin opened 2 months ago
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] numbers = new int[N][2];
for (int i = 0; i < N; i++) {
String[] input = br.readLine().split(" ");
for (int j = 0; j < 2; j++) {
numbers[i][j] = Integer.parseInt(input[j]);
}
}
// 시작점 기준으로 정렬
Arrays.sort(numbers, (o1, o2) -> {
if (o1[0] == o2[0]) return o1[1] - o2[1];
return o1[0] - o2[0];
});
int min = numbers[0][0]; // 가장 작은 시작점
int max = numbers[0][1]; // 가장 큰 시작점
int length = max - min;
for (int i = 1; i < N; i++) {
// 현재 선이 이전 선 안에 포함하고 있는 경우 - 계산하지 않고 넘어간다.
// if (numbers[i][0] >= min && numbers[i][1] <= max) continue;
// 현재 선이 이전 선의 시작점 안에 있고, 끝점이 더 긴 경우
if (numbers[i][0] >= min && numbers[i][0] <= max &&numbers[i][1] > max) {
max = numbers[i][0];
length += (max - length);
} else {
min = numbers[i][0];
max = numbers[i][1];
length += (max - min);
}
}
System.out.println(length);
}
}
https://www.acmicpc.net/problem/2170