μ½λ
t = int(input())
num = list(map(int,input().split()))
dp = [1] * t
for i in range(t):
for j in range(i):
if num[i] > num[j]:
dp[i] = max(dp[i],dp[j]+1) # νμ¬μ dpκ°κ³Ό μ΄μ μμ dpκ°μ 1μ λν κ°μ λΉκ΅ ν λ ν¬λ©΄ κ°±μ
print(max(dp))
λΆμ > LIS(Longest Increasing Subsequence) μκ³ λ¦¬μ¦μΌλ‘ μ리λ κ°λ¨νλ€. νμ¬μ μ (num[i]) κ° λΉκ΅λμμ΄ λλ μ΄μ μ μ (num[j]) λ³΄λ€ ν΄ λλ§, λΉκ΅ λμμ΄ λλ μμ dpκ°μ 1μ λν κ°μ κ°±μ νλ κ²μ΄λ€. κ·Έλ κ² μ΄μ μ μλ€μ λͺ¨λ νμνλ©΄, μ΅μ’ μ μΌλ‘ νμ¬ μμ dpκ°μ μ΄μ μ μ€μμ κ°μ₯ ν° ν¬κΈ°μ dpκ°μ 1μ λν κ°μ΄ λλ€. κ·Έλ κ² ν΄μ νμ±λ λ°°μ΄μμ κ°μ₯ ν° κ°μ΄ κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄μ κΈΈμ΄κ° λλ€.
11053λ²: κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄
μμ΄ Aκ° μ£Όμ΄μ‘μ λ, κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€. μλ₯Ό λ€μ΄, μμ΄ A = {10, 20, 10, 30, 20, 50} μΈ κ²½μ°μ κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄μ A = {10, 20, 10, 30, 20, 50} μ΄
www.acmicpc.net
'Algorithm > BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] λΉμ·ν λ¨μ΄ (0) | 2022.05.18 |
---|---|
[BOJ] λμ μλ₯΄κΈ° (0) | 2022.05.16 |
[BOJ] μ¬λ¦Όν½ (0) | 2022.05.13 |
[BOJ] κ³΅ν΅ λΆλΆ λ¬Έμμ΄ (0) | 2022.05.13 |
[BOJ] μΆμ (#2002) (0) | 2022.05.03 |