λ°±μ€ (BOJ) 11053λ²
https://www.acmicpc.net/problem/11053
μ¬μ©μΈμ΄ : PYTHON
1.λ¬Έμ
2.νμ΄
A={10,20,10,30,20,50}μ μλ‘ λ€μ΄ μκ°ν΄λ³΄μλ€.
dp[i] = A[0], A[1], ... A[i] μΌλ 'μ¦κ°νλ λΆλΆ μμ΄'μμ A[i]μ μμΉ(μΈλ±μ€)κ° μ΄λ€.
- i=0 μΌ λ dp[0]λ
A[0] μ¦ 10μ 'μ¦κ°νλ λΆλΆ μμ΄'={10} μμ μμΉ μ¦ 1 μ΄λ€. - i=1 μΌ λ dp[1]λ
A[1] μ¦ 20μ 'μ¦κ°νλ λΆλΆ μμ΄'={10,20} μμ μμΉ μ¦ 2 μ΄λ€. - i=2 μΌ λ dp[2]λ
A[2] μ¦ 10μ 'μ¦κ°νλ λΆλΆ μμ΄'={10,20} μμ μμΉ μ¦ 1 μ΄λ€. - i=3 μΌ λ dp[3]λ
A[3] μ¦ 30μ 'μ¦κ°νλ λΆλΆ μμ΄'={10,20,30} μμ μμΉ μ¦ 3 μ΄λ€. - i=4 μΌ λ dp[4]λ
A[4] μ¦ 20μ 'μ¦κ°νλ λΆλΆ μμ΄'={10,20,30} μμ μμΉ μ¦ 2 μ΄λ€. - i=5 μΌ λ dp[5]λ
A[5] μ¦ 50μ 'μ¦κ°νλ λΆλΆ μμ΄'={10,20,30,50} μμ μμΉ μ¦ 4 μ΄λ€.
κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄μ κΈΈμ΄λ max(dp) μ¦ 4κ° λλ€.
A={10,15,20,1,2,3,4,5,30,27}μ μλ‘ λ€μ΄ μκ°ν΄λ³΄μλ€.
- i=0 μΌ λ dp[0]λ
A[0] μ¦ 10μ 'μ¦κ°νλ λΆλΆ μμ΄'={10} μμ μμΉ μ¦ 1 μ΄λ€. - i=1 μΌ λ dp[1]λ
A[1] μ¦ 15μ 'μ¦κ°νλ λΆλΆ μμ΄'={10,15} μμ μμΉ μ¦ 2 μ΄λ€. - i=2 μΌ λ dp[2]λ
A[2] μ¦ 20μ 'μ¦κ°νλ λΆλΆ μμ΄'={10,15,20} μμ μμΉ μ¦ 3 μ΄λ€. - i=3 μΌ λ dp[3]λ
A[3] μ¦ 1μ 'μ¦κ°νλ λΆλΆ μμ΄'={1} μμ μμΉ μ¦ 1 μ΄λ€. - i=4 μΌ λ dp[4]λ
A[4] μ¦ 2μ 'μ¦κ°νλ λΆλΆ μμ΄'={1,2} μμ μμΉ μ¦ 2 μ΄λ€. - i=5 μΌ λ dp[5]λ
A[5] μ¦ 3μ 'μ¦κ°λλ λΆλΆ μμ΄'={1,2,3} μμ μμΉ μ¦ 3 μ΄λ€. - i=6 μΌ λ dp[6]λ
A[6] μ¦ 4μ 'μ¦κ°νλ λΆλΆ μμ΄'={1,2,3,4} μμ μμΉ μ¦ 4 μ΄λ€. - i=7 μΌ λ dp[7]λ
A[7] μ¦ 5μ 'μ¦κ°νλ λΆλΆ μμ΄'={1,2,3,4,5} μμ μμΉ μ¦ 5 μ΄λ€. - i=8 μΌ λ dp[8]λ
A[8] μ¦ 30μ 'μ¦κ°νλ λΆλΆ μμ΄'={1,2,3,4,5,30} μμ μμΉ μ¦ 6 μ΄λ€. - i=9 μΌ λ dp[9]λ
A[9] μ¦ 27μ 'μ¦κ°νλ λΆλΆ μμ΄'={1,2,3,4,5,27} μμ μμΉ μ¦ 6 μ΄λ€.
κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄μ κΈΈμ΄λ max(dp) μ¦ 6μ΄ λλ€.
2-1.μνμμ μΈμ°κΈ°
2-2.base caseλ‘ μλ ΄νλμ§ νμΈ
kκ° μμΌλ©΄ dp[i]+=1μΈ base caseλ‘ μλ ΄νλ€
2-3.μνμμ κ³μ°
dpλ°°μ΄μ d[0]=1, λλ¨Έμ§λ 0μΌλ‘ μ΄κΈ°ν νλ€.
20λ³΄λ€ μμΌλ©΄μ dpκ°μ ν° dp[0]+1
λ§μ‘±νλ kκ° μμΌλ―λ‘ μκΈ°μμ + 1
30λ³΄λ€ μμΌλ©΄μ dpκ°μ ν° dp[1]+1
20λ³΄λ€ μμΌλ©΄μ dpκ°μ ν° dp[2]+1
50λ³΄λ€ μμΌλ©΄μ dpκ°μ ν° dp[3]+1
3.μ½λ
dp + 1 μ°μ°μ λͺ¨λ μννκΈ° λλ¬Έμ μμͺ½ forλ¬Έ λ°μΌλ‘ +1μ°μ°μ λΊλ€.
import sys
input = sys.stdin.readline
N=int(input())
p=list(map(int,input().split()))
dp=[0]*N
dp[0]=1
for i in range(1,N):
for j in range(i):
if(p[j]<p[i] and dp[j]>dp[i]):
dp[i]=dp[j]
dp[i]+=1
print(max(dp))
'πμ½λ©ν μ€νΈ:CodingTest' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€ 14500λ²-νμ΄μ¬]ν νΈλ‘λ―Έλ Έ (0) | 2023.06.20 |
---|---|
[λ°±μ€ 1107λ²-νμ΄μ¬]리λͺ¨μ»¨ (0) | 2023.06.20 |
[λ°±μ€ 11052λ²-νμ΄μ¬]μΉ΄λ ꡬ맀νκΈ° (0) | 2023.06.20 |
[λ°±μ€ 1463λ²-νμ΄μ¬]1λ‘ λ§λ€κΈ° (0) | 2023.06.20 |
[λ°±μ€ 6588λ²-νμ΄μ¬]골λλ°νμ μΆμΈ‘ (0) | 2023.06.20 |