11053λ²: κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄
μμ΄ Aκ° μ£Όμ΄μ‘μ λ, κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€. μλ₯Ό λ€μ΄, μμ΄ A = {10, 20, 10, 30, 20, 50} μΈ κ²½μ°μ κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄μ A = {10, 20, 10, 30, 20, 50} μ΄
www.acmicpc.net
μ€λͺ
λΆλΆ μμ΄μ μ΅λ κΈΈμ΄λ₯Ό ꡬν΄μΌ νλ λ¬Έμ μ΄λ€. λΆλΆ μμ΄μ΄λ μ£Όμ΄μ§ μμ΄μ μΌλΆ νμ μλ μμλλ‘ λμ΄νμ¬ μ»μ μ μλ μμ΄μ΄λ€. μ½κ² λ§ν΄μ μ΄μ μλ³΄λ€ ν¬λ©΄ μμ΄μ΄ μ΄λ£¨μ΄μ§λ€. νν μνμμ 보μλ λ νμ μ°¨μ΄κ° μΌμ ν λ±μ°¨μμ΄μ λ§νλ κ²μ΄ μλλ€.
μλ₯Ό λ€μ΄, A : { 10, 20, 10, 30, 20, 50 } μ΄λΌλ μμ΄μ΄ μμ λ, λΆλΆ μμ΄μ A : { 10, 20, 10, 30, 20, 50 } μ΄κ³ , μ΅λ κΈΈμ΄λ 4μ΄λ€.
νμ΄
Dynamic ProgrammingμΌλ‘ νμ΄μΌ νλ λ¬Έμ μ΄λ€. μ΄μ λ¬Έμ λ₯Ό κ°μ§κ³ μ¬μ¬μ©ν΄μ νμ΄μΌ νλ€.
νμ΄ 1
λ°λ³΅λ¬Έμ λλ €μ£Όλ©΄μ νμ¬ κ°(i)μ΄ μ΄μ κ°(j)λ³΄λ€ ν¬λ©΄,
dpμμμ νμ¬ μμΉ(i)μ μ΄μ μμΉ(j)μμ +1μ ν΄μ€ μΉ΄μ΄νΈ κ°κ³Ό λΉκ΅νμ¬
λ ν° μΉ΄μ΄νΈ κ°μ νμ¬ μμΉ(i)μ μ μ₯ν΄μ€λ€. μ΄λ κ² νλ©΄ μ§κΈκ» μΉ΄μ΄νΈ νλ κ° μ€ ν° κ°μ μ μ₯νλ©΄μ μμ΄μ μ΅λκ°μ μ μ μλ κ²μ΄λ€.
μ΅μ’ μΌλ‘ κ²°κ³Όλ₯Ό μΆλ ₯ν λ dpμ μ μ₯λμ΄ μλ κ°μμ μ΅λκ°μ μΆλ ₯νλ€.
νμ΄ 2
νμ¬ κ°μ΄(i)μ΄ μ΄μ κ°(j)λ³΄λ€ ν¬λ©΄μ, dpμμμ νμ¬ μμΉ(i)κ° μ΄μ μμΉ(j)λ³΄λ€ μΉ΄μ΄νΈ μκ° μμΌλ©΄
μ΄μ μμΉ(j)μ μΉ΄μ΄νΈ κ°μ νμ¬ μμΉ(i)μ μ μ₯νλ€.
μ΄μ μμΉμμ λΉκ΅κ° λλ¬μΌλ©΄ νμ¬ μμΉ(i)μ +1μ ν΄μ£Όλ©° countν΄μ€λ€.
μ¬μ€ κΈλ‘λ§ λ³΄λ©΄ μ΄ν΄κ° μ μ κ°κΈ° λλ¬Έμ μ½λ ν μ€ ν μ€μ λ³μλ₯Ό λ£μ΄κ°λ©° νμ΄λ³΄λ κ²μ΄ μ’μ κ² κ°λ€.
Solution
νμ΄ 1
import sys
input = sys.stdin.readline
N = int(input())
num = list(map(int, input().split()))
dp = [1]*N
for i in range(N):
for j in range(i):
if num[i] > num[j]:
dp[i] = max(dp[i], dp[j]+1)
print(max(dp))
νμ΄ 2
import sys
input = sys.stdin.readline
N = int(input())
num = list(map(int, input().split()))
dp = [0]*N
for i in range(N):
for j in range(i):
if num[i] > num[j] and dp[i] < dp[j]:
dp[i] = dp[j]
dp[i] += 1
print(max(dp))'π§© Algorithm > [BOJ] Silver' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| BOJ 11722λ² : κ°μ₯ κΈ΄ κ°μνλ λΆλΆ μμ΄ (Python/Silver 2) (1) | 2023.10.26 |
|---|---|
| BOJ 9461λ² : νλλ° μμ΄ (Python/Silver 3) (0) | 2023.10.26 |
| BOJ 2312λ² : μ 볡μνκΈ° (Python/Silver 3) (0) | 2023.09.24 |
| BOJ 2960λ² : μλΌν μ€ν λ€μ€μ 체 (Python/Silver 4) (0) | 2023.09.23 |
| BOJ 2583λ² : μμ ꡬνκΈ° (Python/Silver 1) (0) | 2023.09.22 |