문제
풀이
$a < b$인 노선을 정상 노선, 그렇지 않은 노선을 비정상 노선이라 합시다.
이때 정상 노선끼리 포함하는 경우, 비정상 노선끼리 포함하는 경우, 비정상 노선이 정상 노선을 포함하는 경우만 생각하면 됩니다.
$a > b$인 비정상 노선은 항상 $N - 1$와 $0$을 지나고 정상 노선은 이를 지나지 않으므로 정상 노선이 비정상 노선을 포함할 수는 없습니다.
정상 노선끼리의 포함
스위핑을 통해 해결할 수 있습니다. $a$를 기준으로 오름차순, 만약 같다면 $b$를 기준으로 내림차순 정렬합니다. 반복문을 통해 돌면서 $b$의 최댓값을 기록하고, 만약 현재 보고 있는 노선의 $b$가 최댓값보다 작다면 다른 노선에 포함됩니다.
비정상 노선이 정상 노선을 포함
비정상 노선 중 $a$의 최솟값, $b$의 최댓값을 각각 구합니다. 정상 노선은 $N - 1$과 $0$을 지나지 않으므로 정상 노선의 $a$가 최솟값보다 크거나, $b$가 최댓값보다 작다면 비정상 노선에 포함됨을 알 수 있습니다.
비정상 노선끼리의 포함
정상 노선끼리의 포함과 같은 방법으로 해결할 수 있습니다. 비정상 노선의 $a$에 $N$을 모두 빼고 나서 스위핑으로 해결하면 됩니다.
코드
1 | |