λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Algorithm/BOJ

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

 

 

μ½”λ“œ 

 

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