만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

열린 구간

면접 대비

시간 제한1초메모리 제한128 MB

요약
테스트 케이스마다 최대 50개의 열린 구간이 주어질 때, 끝점만 만나는 구간은 겹치지 않는 것으로 보고 서로 겹치지 않는 최대 개수의 구간을 고른다.
난이도

보통10점 중 4점

유형
그리디, 정렬, 구간, 구현
정답자
아직 제출이 없습니다

문제

수직선 위에 nn개의 열린 구간 (a1,b1),(a2,b2),…,(an,bn)(a_1, b_1), (a_2, b_2), \dots, (a_n, b_n)이 주어진다. 각 구간은 같은 자원을 사용해야 하는 어떤 활동의 시작 시각과 끝 시각을 나타낸다. 서로 겹치는 두 구간이 없도록 구간을 고를 때, 고를 수 있는 구간의 최대 개수를 구하여라.

구간이 열린 구간이므로, 한 구간의 끝점과 다른 구간의 시작점이 같은 경우 — 예를 들어 (1,3)(1, 3)과 (3,5)(3, 5) — 두 구간은 겹치지 않는 것으로 보아 둘 다 고를 수 있다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 구간의 개수를 나타내는 양의 정수 nn (n≤50n \le 50)이 주어진다. 이어지는 nn개의 줄에는 각각 하나 이상의 공백으로 구분된 두 양의 정수가 주어지며, 이는 하나의 구간을 나타낸다. 입력의 끝은 00 하나만 있는 줄로 표시된다.

출력

각 테스트 케이스마다, 서로 겹치지 않도록 고를 수 있는 구간의 최대 개수를 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    5
    10 12
    2 6
    5 8
    3 9
    1 4
    2
    1 3
    3 5
    0
    
    예상 출력
    3
    2
    
  2. 예제 2

    입력
    4
    1 2
    2 3
    3 4
    4 5
    0
    
    예상 출력
    4