Algorithm/BOJ

[BOJ] κ°€μž₯ κΈ΄ μ¦κ°€ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄

Earth Wave 2022. 5. 13. 21:40

 

 

μ½”λ“œ 

 

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