λ°±μ€ 2565 νμ΄μ¬
https://www.acmicpc.net/problem/2565
μ΄λ² λ¬Έμ λ μ κΉμ€μ΄ μλ‘ κ΅μ°¨νμ§ μκ² μμ μΌνλ μ κΉμ€μ μ΅μ κ°μλ₯Ό ꡬνλ λ¬Έμ μ΄λ€. μ²μμ λ¬Έμ λ₯Ό μ΄λ»κ² μ κ·Όν΄μΌν μ§ λͺ¨λ₯΄κ² λ€κ³ μκ°νλλ°... μμ μκ³ λ¦¬μ¦μ μ’ μ΄μ μ μ΄κ°λ©΄μ κ²½μ°μ μλ₯Ό μ°Ύλ€λ³΄λ κ·μΉμ μ°Ύμμ΅λλ€. μ΄ λ¬Έμ λ μ΄μ μ νμλ LIS λ¬Έμ :
[CS/μκ³ λ¦¬μ¦] - λ°±μ€ 11053 νμ΄μ¬ - κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄ - λμ κ³νλ², LIS μ μ°μ₯μ μμ©μ΄λ€.
μ κΈΈμ€μ μ°κ²° μμμ μ κΈ°μ€μΌλ‘ λμ°© μ§μ μ μ μ΄λ³΄λ©΄....
{8, 2, 9, 1, 4, 6, 7, 10}
μλ‘ μ κΈΈ μ€μ΄ κ΅μ°¨νμ§ μκ² νλ €λ©΄... μ°μμ μΌλ‘ μ¦κ°νλ μ«μκ° νμνλ€. μ¦, κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄μ κΈΈμ΄κ° μ΅λλ‘ κ²ΉμΉμ§ μκ³ μ°κ²°ν μ μλ μ κΉ μ€μ΄λ€.
Python νμ΄
import sys
read = sys.stdin.readline
N = int(read())
lines = [list(map(int, read().split())) for _ in range(N)]
lines.sort(key=lambda x: x[0])
seq = [x[1] for x in lines]
counts = [seq[0]]
for i in range(1, N):
if counts[-1] < seq[i]:
counts.append(seq[i])
else:
idx = 0
for j in range(len(counts)):
if counts[j] < seq[i]:
idx += 1
else:
counts[idx] = seq[i]
break
print(N - len(counts))
- μ¦κ°νλ κ°μ₯ κΈ΄ λΆλΆ μμ΄μ ꡬνλ λ‘μ§μ μ΄μ λ¬Έμ μ λκ°λ€.
- μ°¨μ΄κ° μλ λΆλΆμ μ°κ²°λλ μ μ΄ μΆλ°μ μ μ«μλ₯Ό κΈ°μ€μΌλ‘ μ€λ¦μ°¨μμΌλ‘ μ λ ¬λμ΄μΌνλ€.
- κ²°κ³Όλ μ 체 μ κΉμ€μμ μ¦κ°νλ κ°μ₯ κΈ΄ λΆλΆ μμ΄μ κΈΈμ΄λ₯Ό λΊ κ°μ΄λ€.
λκΈ