π³ λ§ν¬
π λ¬Έμ
μ μ‘면체 λͺ¨μμ μμκ° μΌλ ¬λ‘ λμ΄μ μλ€. μμλ§λ€ ν¬κΈ°κ° μ£Όμ΄μ Έ μλλ°, μμ μλ μμμ ν¬κΈ°κ° λ€μ μλ μμμ ν¬κΈ°λ³΄λ€ μμΌλ©΄, μμ μλ μμλ₯Ό λ€μ μλ μμ μμ λ£μ μκ° μλ€. μλ₯Ό λ€μ΄ μμμλΆν° μμλλ‘ ν¬κΈ°κ° (1, 5, 2, 3, 7)μΈ 5κ°μ μμκ° μλ€λ©΄, ν¬κΈ° 1μΈ μμλ₯Ό ν¬κΈ° 5μΈ μμμ λ£κ³ , λ€μ μ΄ μμλ₯Ό ν¬κΈ° 7μΈ μμ μμ λ£μ μ μλ€. νμ§λ§ μ΄λ κ² μμλ₯Ό λ£μ μ μλ λ°©λ²μ μ¬λ¬ κ°μ§κ° μμ μ μλ€. μμ μμμ μ°¨λ‘λλ‘ ν¬κΈ°κ° 1, 2, 3, 7μΈ μμλ₯Ό μ ννλ©΄ μ΄ 4κ°μ μμκ° ν κ°μ μμμ λ€μ΄κ°κ² λλ€.
μμμ ν¬κΈ°κ° μ£Όμ΄μ§ λ, ν λ²μ λ£μ μ μλ μ΅λμ μμ κ°μλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
πΎ νμ΄ λ°©λ²
n κΈΈμ΄μ 0μΌλ‘ μ΄κΈ°νλ dpλΌλ λ°°μ΄μ μμ±νλ€.
box[i] (0<=i<n) κ°μ μμ μμ λ³΄λ€ μμ κ°μ΄ μ‘΄μ¬νλ€λ©΄, κ·Έ κ°λ€μ dpκ°λ€ μ€ κ°μ₯ ν° maxValμ μμ μ μΆκ°νμ¬ (+1) ν΄λΉ κ°μ dp[box[i]]μ μ μ₯νλ€.
μ¦, (1,5,2,3,7)μ μλ₯Ό λ€μ΄λ³΄μλ©΄
- 0λ²μ§Έ κ°(1)μ κ²½μ°μλ μμ μ΄ λ§¨ μ²μμ΄λ―λ‘ λ¬΄μ‘°κ±΄ dp[0]μ 0μ κ°κ² λλ€.
- 1λ²μ§Έ κ°(5)μ κ²½μ°μλ μμ μμ (5)λ³΄λ€ μμ κ°(1)μ΄ μμΌλ―λ‘, 1μ dpκ°μΈ 1μ μμ μ λνλ΄λ 1μ λνμ¬ μ΄ 2λ₯Ό dp[1]μ μ μ₯νλ€.
- 2λ²μ§Έ κ°(2)μ κ²½μ°μλ μμ μμ (2)λ³΄λ€ μμ κ°(1)μ΄ μμΌλ―λ‘, 1μ dpκ° + 1μ νμ¬ 2λ₯Ό dp[2]μ μ μ₯νλ€.
- 3λ²μ§Έ κ°(3)μ κ²½μ°μλ μμ μμ (3)λ³΄λ€ μμ κ°μΈ (1,2)κ° μ‘΄μ¬νλ―λ‘, (1,2)μ dpκ°λ€ μ€ λ ν° κ°μΈ 2μ dpκ°μΈ 2μ +1μ νμ¬ 3μ dp[3]μ μ μ₯νλ€.
- 4λ²μ§Έ κ°(7)μ κ²½μ°μλ μμ μμ (7)λ³΄λ€ μμ κ°μ΄ (1,2,3)μ΄ μ‘΄μ¬νλ―λ‘, (1,2,3)μ dpκ°λ€ μ€ κ°μ₯ ν° κ°μΈ 3μ dpκ° 3μ +1μ νμ¬ 4λ₯Ό dp[4]μ μ μ₯νλ€.
μ΅μ’ μ μΌλ‘ κ°μ₯ ν° κ°μ printν΄μΌνλ―λ‘, max(dp)λ₯Ό μΆλ ₯νλ€. #μΆλ ₯: 4
λͺ¨λ ν μ€νΈμΌμ΄μ€ μ±κ³΅ μ½λ
import sys
sys.stdin = open("input.txt","rt")
n = int(input())
box = list(map(int,input().split()))
dp = [0 for _ in range(n)]
dp[0] = 1
for i in range(1,n):
maxVal = 0
for j in range(0,i):
if box[j] < box[i]:
maxVal = dp[j] if dp[j] > maxVal else maxVal
dp[i] = maxVal+1
print(max(dp))