Algorithm Problem/Python

[python] λ°±μ€€ - 1965. μƒμž λ„£κΈ°

deo2kim 2020. 10. 14. 08:13
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  • S2 | DP

 

[python] λ°±μ€€ - 11055. κ°€μž₯ 큰 증가 λΆ€λΆ„ μˆ˜μ—΄

πŸ€”λ¬Έμ œ ν•΄κ²° S2 | λ‹€μ΄λ‚˜λ―Ήν”„λ‘œκ·Έλž˜λ° μ—­μ‹œ 이런 λ¬Έμ œλŠ” DPλ¬Έμ œμ΄λ‹€. dp 리슀트λ₯Ό λ§Œλ“ λ‹€.(1차원, μΈν’‹κ°’μœΌλ‘œ 받은 μˆ˜μ—΄κ³Ό λ˜‘κ°™μ€ κ°’μœΌλ‘œ λ§Œλ“ λ‹€.) μˆ˜μ—΄μ—μ„œ μžμ‹ λ³΄λ‹€ μ•ž μͺ½μ— μžˆλŠ” κ°’ μ€‘μ—μ„œ μžμ‹ 

deok2kim.tistory.com

μœ„μ˜ λ¬Έμ œμ™€ 살짝 λΉ„μŠ·ν•œ λŠλ‚Œμ΄λ‹€.

  • 값이 1둜 μ…‹νŒ…λœ 길이가 n 인 dp 리슀트λ₯Ό λ§Œλ“ λ‹€. dp = [1, 1, 1, ... ]
  • 각각의 값은 ν˜„μž¬ ν¬ν•¨ν•œ μƒμžμ˜ κ°―μˆ˜μ΄λ‹€.
  • λ§¨μ•žμ˜ μƒμžλΆ€ν„° ν•˜λ‚˜μ”© λ’€λ‘œκ°€λ©° μ•žμ˜ μƒμžλ₯Ό λͺ‡κ°œλ‚˜ 담을 수 μžˆλŠ” 지 μ²΄ν¬ν•œλ‹€.
  • λ§Œμ•½ λ‚΄μ•žμ˜ μƒμžκ°€ λ‚˜λ³΄λ‹€ μž‘κ³  κ·Έ μƒμžκ°€ λ‹΄κ³  μžˆλŠ” μƒμžμ˜ 갯수(본인포함)κ°€ 5개라면
    μ§€κΈˆ λ‚˜μ˜ μƒμžλŠ” μ•žμ˜ μƒμžκΉŒμ§€ 담을 수 μžˆμœΌλ―€λ‘œ 6이 λœλ‹€.

 

πŸ’»μ†ŒμŠ€ μ½”λ“œ

n = int(input())
boxes = list(map(int, input().split()))

dp = [1] * n
for i in range(1, n):
    tmp = 0
    for j in range(i - 1, -1, -1):
        if boxes[j] < boxes[i]:
            tmp = max(dp[j], tmp)

    dp[i] += tmp

print(max(dp))

 

πŸ“•λ¬Έμ œ 확인

좜처: BACKJOON ONLINE JUDGE

링크: https://www.acmicpc.net/problem/1965

 

1965번: μƒμžλ„£κΈ°

μ •μœ‘λ©΄μ²΄ λͺ¨μ–‘μ˜ μƒμžκ°€ μΌλ ¬λ‘œ λŠ˜μ–΄μ„œ μžˆλ‹€. μƒμžλ§ˆλ‹€ 크기가 μ£Όμ–΄μ Έ μžˆλŠ”λ°, μ•žμ— μžˆλŠ” μƒμžμ˜ 크기가 뒀에 μžˆλŠ” μƒμžμ˜ 크기보닀 μž‘μœΌλ©΄, μ•žμ— μžˆλŠ” μƒμžλ₯Ό 뒀에 μžˆλŠ” μƒμž μ•ˆμ— 넣을 μˆ˜κ°€ οΏ½οΏ½

www.acmicpc.net

λ°˜μ‘ν˜•