이것이 μ½”λ”©ν…ŒμŠ€νŠΈλ‹€ - κ°œλ―Έμ „μ‚¬

2020. 9. 9. 20:49ㆍ이것이 μ½”λ”©ν…ŒμŠ€νŠΈλ‹€/λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ°

1 3 1 5

 

1

1 1

1 5

3

3 5

1

5

 

 

이 문제λ₯Ό 보고 λ°”λ‘œ 점화식을 μ„Έμ›Œμ•Όκ² λ‹€λŠ” μ–΄λ–»κ²Œ ν•˜λŠ” 걸까?

점화식은 μ°Έ μ‹ κΈ°ν•˜λ‹€. ν•­λ“€μ˜ κ΄€κ³„λ‘œ 닡을 ν’€μ–΄κ°„λ‹€λŠ” 게 μ°Έ λ‚˜μ—κ²ŒλŠ” 아직 μ–΄λ ΅λ‹€.

κ·ΈλŸΌμ—λ„ ν•œλ²ˆ 더 ν’€μ–΄λ³Έλ‹€.

이 λ¬Έμ œμ—μ„œλŠ” i번째λ₯Ό κ³¨λžμ„ λ•Œ i-2번째의 κ°’κ³Ό λ”ν•œ κ°’κ³Ό i-1번째 κ°’ ν•˜λ‚˜λ§Œ κ³¨λžμ„ λ•Œ 이 λ‘˜μ€‘μ— 큰 것이 d[i]의 값이 되게 ν’€μ—ˆλ‹€. λ‚΄κ°€ μƒκ°ν•œ μ ν™”μ‹μ˜ 핡심은 이렇닀. 가정을 μ΅œμ†Œν•œμœΌλ‘œ λ§Œλ“€μ–΄μ„œ 3가지 가정을 λ§Œλ“  후에 일일히 λŒ€μž…ν•΄λ³΄λŠ” 것이닀. κ·Έλ ‡λ‹€λ©΄ 4번쨰 가정을 곡식에 λŒ€μž…ν–ˆμ„ λ•Œ 풀리면 점화식이닀. λ…Όλ¦¬μ μœΌλ‘œ 닡이 λ„μΆœμ•ˆλ  λ•Œ μ΄λ ‡κ²Œ ν’€μ΄ν•˜λ©΄ 될 것 κ°™λ‹€. ν•˜μ§€λ§Œ μš°λ¦¬λŠ” λ…Όλ¦¬μ μœΌλ‘œ κ΅¬ν•˜λŠ” μ—°μŠ΅μ„ ν•΄μ•Όν•œλ‹€. 

 

iλ²ˆμ§ΈκΉŒμ§€μ˜ μ΅œλŒ€κ°’μ„ d[i]에 μ €μž₯ν•˜λŠ” 것 제일 μ€‘μš”ν•˜λ‹€.

 

3λ²ˆμ§ΈκΉŒμ§€μ˜ μ΅œλŒ€κ°’μ„ κ΅¬ν•œλ‹€κ³  μƒκ°ν•΄λ³΄μž.

μš°μ„  1λ²ˆμ§ΈκΉŒμ§€μ˜ μ΅œλŒ€κ°’μ€ 1이 λ“€μ–΄κ°„λ‹€. 

2λ²ˆμ§ΈκΉŒμ§€μ˜ μ΅œλŒ€κ°’μ€ 1κ³Ό 3 λ‘˜μ€‘ ν°κ²ƒμ΄λ‹ˆ 3이 λ“€μ–΄κ°„λ‹€.

3λ²ˆμ§ΈκΉŒμ§€μ˜ μ΅œλŒ€κ°’μ€ 1+1κ³Ό 3 λ‘˜μ€‘ 큰것이닀.

κ·Έλ ‡λ‹€λ©΄ 4λ²ˆμ§ΈκΉŒμ§€μ˜ μ΅œλŒ€κ°’μ€? λ§ˆμ°¬κ°€μ§€μ΄λ‹€ d[3]κ³Ό d[2]+array[4]의 값을 비ꡐ해보면 λœλ‹€.

점점 μ΅œλŒ€κ°’μ΄ μ»€μ§€λŠ” μ˜€λ¦„μ°¨μˆœμ΄κΈ° λ•Œλ¬Έμ— i-1λ²ˆμ¨°μ™€ i-2번쨰 + i번째λ₯Ό 비ꡐ할 수 μžˆλŠ” 것이닀.

μ—°μŠ΅ν•˜μž..

 

 

μ†ŒμŠ€ μ½”λ“œλŠ” 이렇닀.

 

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

d = [0]*100

d[0] = array[0]
d[1] = max(array[0], array[1])
for i in range(2,n):
  d[i] = max(d[i-1], d[i-2] + array[i])

print(d[n-1])