[λ°±μ€ 1931 π₯] νμμ€ λ°°μ
https://www.acmicpc.net/problem/1931
1931λ²: νμμ€ λ°°μ
(1,4), (5,7), (8,11), (12,14) λ₯Ό μ΄μ©ν μ μλ€.
www.acmicpc.net
λ¬Έμ
ν κ°μ νμμ€μ΄ μλλ° μ΄λ₯Ό μ¬μ©νκ³ μ νλ Nκ°μ νμμ λνμ¬ νμμ€ μ¬μ©νλ₯Ό λ§λ€λ €κ³ νλ€. κ° νμ Iμ λν΄ μμμκ°κ³Ό λλλ μκ°μ΄ μ£Όμ΄μ Έ μκ³ , κ° νμκ° κ²ΉμΉμ§ μκ² νλ©΄μ νμμ€μ μ¬μ©ν μ μλ νμμ μ΅λ κ°μλ₯Ό μ°Ύμ보μ. λ¨, νμλ νλ² μμνλ©΄ μ€κ°μ μ€λ¨λ μ μμΌλ©° ν νμκ° λλλ κ²κ³Ό λμμ λ€μ νμκ° μμλ μ μλ€. νμμ μμμκ°κ³Ό λλλ μκ°μ΄ κ°μ μλ μλ€. μ΄ κ²½μ°μλ μμνμλ§μ λλλ κ²μΌλ‘ μκ°νλ©΄ λλ€.
μ λ ₯
첫째 μ€μ νμμ μ N(1 ≤ N ≤ 100,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° N+1 μ€κΉμ§ κ° νμμ μ λ³΄κ° μ£Όμ΄μ§λλ° μ΄κ²μ 곡백μ μ¬μ΄μ λκ³ νμμ μμμκ°κ³Ό λλλ μκ°μ΄ μ£Όμ΄μ§λ€. μμ μκ°κ³Ό λλλ μκ°μ 231-1λ³΄λ€ μκ±°λ κ°μ μμ°μ λλ 0μ΄λ€.
μΆλ ₯
첫째 μ€μ μ΅λ μ¬μ©ν μ μλ νμμ μ΅λ κ°μλ₯Ό μΆλ ₯νλ€.
λ¬Έμ νμ΄
- μ λ ¬κ³Ό 그리λλ₯Ό μ΄μ©ν΄μ νΌ λ¬Έμ λ€.
- μ°μ μ’
λ£ μκ°μ κΈ°μ€μΌλ‘ μ€λ¦μ°¨μ μ λ ¬νλ€.
- μλνλ©΄ μμνλ μκ°μ΄ λΉ λ₯΄λλΌλ μ’ λ£ μκ°μ΄ λ¦λ€λ©΄ λ€λ₯Έ νμλ₯Ό μμν μ μλ€.
- κ·Έλ¬λ―λ‘ λ λ§μ μμ νμλ₯Ό λ°°μ νλ €λ©΄ μ’ λ£μκ°μ΄ λΉ λ₯Έ μμΌλ‘ νμλ₯Ό λ°°μ ν΄μΌ νλ€.
- λ¨, μ’
λ£ μκ°μ΄ κ°μ κ²½μ°μ μμ μκ°μ κΈ°μ€μΌλ‘ μ λ ¬νλ€.
- μλνλ©΄ λ λΉ λ₯Έ μμ μκ°μ λ¨Όμ λ°°μΉν΄μΌ μ’
λ£ μκ°μ΄ κ°μ λ€μ νμλ₯Ό λ°°μ ν μ μκΈ° λλ¬Έμ΄λ€. μλ₯Ό λ λ€λ©΄ λ€μκ³Ό κ°λ€.
- (1,1), (2,3), (3,3)κ³Ό κ°μ νμ μμ μκ°μ΄ μμ λ λ§μ½ κ°μ μ’ λ£μκ°μ λν μμμκ°μ μ λ ¬μ΄ μ΄λ£¨μ΄μ Έμμ§ μμμ (1,1), (3,3), (2,3)μ²λΌ μ λ ¬λμ΄ μλ€λ©΄ (1,1), (2,3), (3,3) μ΄ 3κ°μ νμλ₯Ό λ°°μ ν μ μμμλ λΆκ΅¬νκ³ (1,1), (3,3)λ§μ μ ννκ² λκΈ° λλ¬Έμ΄λ€.
- μλνλ©΄ λ λΉ λ₯Έ μμ μκ°μ λ¨Όμ λ°°μΉν΄μΌ μ’
λ£ μκ°μ΄ κ°μ λ€μ νμλ₯Ό λ°°μ ν μ μκΈ° λλ¬Έμ΄λ€. μλ₯Ό λ λ€λ©΄ λ€μκ³Ό κ°λ€.
- νμ¬ νμ μ’ λ£ μκ°μ μ λ ¬λ νμ λͺ©λ‘μ κΈ°μ€μΌλ‘ 첫 λ²μ§Έ νμμ μ’ λ£ μκ°μΌλ‘ μ΄κΈ°ννλ€.
- 1λ²μ§Έ μμΉμ νμλΆν° νμμ μμνλ©΄μ νμ¬ νμ μ’ λ£ μκ°(cur_endtime)κ³Ό νμ μ€μΈ νμμ μμ μκ°μ λΉκ΅νμ λ μ’ λ£ μκ°μ΄ μκ±°λ κ°λ€λ©΄ ν΄λΉ νμλ₯Ό λ°°μΉν μ μκΈ° λλ¬Έμ νμ¬ νμ μ’ λ£ μκ°(cur_endtime)μ νμ μ€μΈ νμμ μ’ λ£ μκ°μΌλ‘ κ°±μ νκ³ , λ΅μ κ°μ answerμ +1 ν΄μ€λ€.
import sys
input=sys.stdin.readline
n=int(input())
meeting=[]
for _ in range(n):
s,e=map(int, input().split(' '))
meeting.append([s,e])
meeting.sort(key=lambda x:(x[1],x[0]))
cur_endtime=meeting[0][1]
answer=1
for i in range(1,n):
# νμ¬ νμμ μ’
λ£ μκ°μ΄ λ€μ νμ μμ μκ°λ³΄λ€ μκ±°λ κ°λ€λ©΄ κ°λ₯
if cur_endtime<=meeting[i][0]:
cur_endtime=meeting[i][1]
answer+=1
print(answer)