2ํ•™๋…„ 2ํ•™๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณผ์ œ_1์ฃผ์ฐจ(๋ฐฑ์ค€_1932๋ฒˆ:์ •์ˆ˜ ์‚ผ๊ฐํ˜•)

2024. 9. 24. 13:14ใ†Algorithm ( p & swlug )/Baekjoon

 ๐Ÿ“Œ 1์ฃผ์ฐจ ๊ณผ์ œ 2

 

 

๋ฌธ์ œ

        7
      3   8
    8   1   0
  2   7   4   4
4   5   2   6   5

์œ„ ๊ทธ๋ฆผ์€ ํฌ๊ธฐ๊ฐ€ 5์ธ ์ •์ˆ˜ ์‚ผ๊ฐํ˜•์˜ ํ•œ ๋ชจ์Šต์ด๋‹ค.

๋งจ ์œ„์ธต 7๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์•„๋ž˜์— ์žˆ๋Š” ์ˆ˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์•„๋ž˜์ธต์œผ๋กœ ๋‚ด๋ ค์˜ฌ ๋•Œ, ์ด์ œ๊นŒ์ง€ ์„ ํƒ๋œ ์ˆ˜์˜ ํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ. ์•„๋ž˜์ธต์— ์žˆ๋Š” ์ˆ˜๋Š” ํ˜„์žฌ ์ธต์—์„œ ์„ ํƒ๋œ ์ˆ˜์˜ ๋Œ€๊ฐ์„  ์™ผ์ชฝ ๋˜๋Š” ๋Œ€๊ฐ์„  ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๊ฒƒ ์ค‘์—์„œ๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์‚ผ๊ฐํ˜•์˜ ํฌ๊ธฐ๋Š” 1 ์ด์ƒ 500 ์ดํ•˜์ด๋‹ค. ์‚ผ๊ฐํ˜•์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๊ฐ ์ˆ˜๋Š” ๋ชจ๋‘ ์ •์ˆ˜์ด๋ฉฐ, ๋ฒ”์œ„๋Š” 0 ์ด์ƒ 9999 ์ดํ•˜์ด๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์‚ผ๊ฐํ˜•์˜ ํฌ๊ธฐ n(1 ≤ n ≤ 500)์ด ์ฃผ์–ด์ง€๊ณ , ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ n+1๋ฒˆ์งธ ์ค„๊นŒ์ง€ ์ •์ˆ˜ ์‚ผ๊ฐํ˜•์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋Š” ๊ฒฝ๋กœ์— ์žˆ๋Š” ์ˆ˜์˜ ํ•ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

 

 ๐Ÿ“Œ ๋‚ด ์ƒ๊ฐ(ํ’€์ด)

 

์ผ๋‹จ ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉด ํฌ๊ธฐ๊ฐ€ 5์ธ ์ •์ˆ˜ ์‚ผ๊ฐํ˜•์ธ๋ฐ, ๋งจ์œ„์ธต 7๋ถ€ํ„ฐ ์•„๋ž˜ ์ˆ˜๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ํƒํ•ด ์•„๋ž˜์ธต์œผ๋กœ ๋‚ด๋ ค์˜ฌ ๋•Œ, ์„ ํƒํ•œ ์ˆ˜์˜ ํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋„๋ก ํ•ด์•ผํ•œ๋‹ค.

์•„๋ž˜์ธต ์ˆ˜๋Š” ํ˜„์žฌ ์ธต์—์„œ ์„ ํƒ๋œ ์ˆ˜์˜ ๋Œ€๊ฐ์„  ์™ผ์ชฝ ๋˜๋Š” ๋Œ€๊ฐ์„  ์˜ค๋ฅธ์ชฝ์— ์ž‡๋Š” ๊ฒƒ ์ค‘์—์„œ๋งŒ ์„ ํƒ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•ด๋‹น๋ฌธ์ œ๋Š” ๋ฐฐ์—ด๋กœํ•ด์„œ ๊ตฌํ–ˆ์„๋•Œ ์ตœ๋Œ€๊ฐ€ ๋˜๋Š” ๊ฐ’์„ ๊ตฌํ•˜๋„๋ก ๊ตฌ์„ฑํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.

ํŒŒ์ด์ฌ์„ ํ’€๊ฑฐ๋ผ๋ฉด, for๋ฌธ์„ ํ†ตํ•ด์„œ ๊ตฌํ˜„์„ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๊ณ , ์˜ค๋ฅธ์ชฝ ๋Œ€๊ฐ์„ ๊ณผ ์˜ค๋ฅธ์กฑ ๋Œ€๊ฐ์„  ์ค‘ ๋ˆ„์ ์„ ํ•ด์•ผํ•˜๋ฏ€๋กœ appendํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ•  ๊ฒƒ์ด๋‹ค.

 

 

 ๐Ÿ“Œ์ฝ”๋“œ ๋ฐ ์ฝ”๋“œ ํ•ด์„

# ์ž…๋ ฅ๋ฐ›์„ ์ˆซ์ž์˜ ๊ฐœ์ˆ˜ n
n = int(input())

d = []
for i in range(n):
  
  # ๊ฐ ํ–‰์˜ ์ˆซ์ž๋“ค์„ ์ž…๋ ฅ๋ฐ›์•„ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๊ธฐ
    d.append(list(map(int, input().split())))

# ์‚ผ๊ฐํ˜•์˜ ๋‘ ๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ ์‹œ์ž‘
for i in range(1, n):
    for j in range(len(d[i])):
        # ์ฒซ ๋ฒˆ์งธ ์—ด ์ฒ˜๋ฆฌ: ์œ„์˜ ํ–‰์˜ ์ฒซ ๋ฒˆ์งธ ์—ด๊ณผ ๋”ํ•˜๊ธฐ
        if j == 0:
            d[i][j] = d[i][j] + d[i-1][j]
        # ๋งˆ์ง€๋ง‰ ์—ด ์ฒ˜๋ฆฌ: ์œ„์˜ ํ–‰์˜ ๋งˆ์ง€๋ง‰ ์—ด๊ณผ ๋”ํ•˜๊ธฐ
        elif j == len(d[i]) - 1:
            d[i][j] = d[i][j] + d[i-1][j-1]
        # ์ค‘๊ฐ„ ์—ด ์ฒ˜๋ฆฌ: ์œ„์˜ ๋‘ ์—ด ์ค‘ ํฐ ๊ฐ’์„ ๋”ํ•˜๊ธฐ
        else:
            d[i][j] = max(d[i-1][j-1], d[i-1][j]) + d[i][j]

# ๋งˆ์ง€๋ง‰ ํ–‰์—์„œ ์ตœ๋Œ€๊ฐ’ ์ถœ๋ ฅํ•˜๊ธฐ
print(max(d[n-1]))

 

ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ํ’€์–ด์•ผํ•œ๋‹ค.

์ด ์ฝ”๋“œ๋Š” ์ฃผ์–ด์ง„ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ์‚ผ๊ฐํ˜• ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„, ๊ฐ€์žฅ ํฐ ๊ฒฝ๋กœ์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

ํ•˜๋‚˜์”ฉ ์ ์–ด๊ฐ€๋ฉด์„œ ๊ทœ์น™์„ ์ฐพ์•„์•ผํ•œ๋‹ค.

d[0][0]=7
d[1][0]=3+7, d[1][1]=8+7
d[2][0]=8+d[1][0], d[2][1]=1+max(d[1][0],d[1][1]),
d[2][2]=0+d[1][1]

d[3][0]=2+d[2][0], d[3][1]=7+max(d[2][0],d[2][1]),
d[3][2]=4+max(d[2][1],d[2][2]), d[3][3]=4+d[2][2]

๊ฐ ๋ผ์ธ์˜ ์ฒ˜์Œ๊ณผ ๋์€ ๋ฐ”๋กœ ์œ„์— ์ˆซ์ž๋ฅผ ๋”ํ•ด์ฃผ๊ณ , ๋‚˜๋จธ์ง€๋Š” ์™ผ์ชฝ ๋Œ€๊ฐ์„ , ์˜ค๋ฅธ์ชฝ ๋Œ€๊ฐ์„  ์ค‘ ์ตœ๋Œ“๊ฐ’์„ ๋”ํ•ด๋‚˜๊ฐ€ ๊ณ„์† ๋ˆ„์ ํ•ด์„œ ๋”ํ•ด๊ฐ€๋„๋กํ•ด์•ผํ•œ๋‹ค.

 

1) ์ž…๋ ฅํ•˜๊ธฐ

n์€ ์‚ผ๊ฐํ˜•์˜ ํ–‰ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ์ดํ›„ ๊ฐ ํ–‰์˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ 2์ฐจ์› ๋ฆฌ์ŠคํŠธ d์— ์ €์žฅํ•œ๋‹ค.

 

2)๊ฒฝ๋กœ ํ•ฉ ๊ณ„์‚ฐํ•˜๊ธฐ

  • ์‚ผ๊ฐํ˜•์˜ ๋‘ ๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๊ฐ ์š”์†Œ์˜ ๊ฐ’์„ ๊ฐฑ์‹ 
  • ์ฒซ ๋ฒˆ์งธ ์—ด์˜ ์š”์†Œ๋Š” ์œ„์˜ ํ–‰์˜ ํ•ด๋‹น ์š”์†Œ๋งŒ ๋”ํ•˜๊ณ ,
  • ๋งˆ์ง€๋ง‰ ์—ด์€ ์œ„์˜ ํ–‰์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ์™€ ๋”ํ•œ๋‹ค.
  • ์ค‘๊ฐ„ ์—ด์€, ์œ„์˜ ํ–‰์—์„œ ํ•ด๋‹น ์š”์†Œ์˜ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ์˜ ์ตœ๋Œ€๊ฐ’์„ ๋”ํ•œ๋‹ค.
  • ์ด ๊ณผ์ •์„ ํ†ตํ•ด ํ•ด๋‹น ๊ฒฝ๋กœ์˜ ์ตœ๋Œ€ ํ•ฉ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ.

 

3)๊ฒฐ๊ณผ ์ถœ๋ ฅํ•˜๊ธฐ

  • ๋งˆ์ง€๋ง‰ ํ–‰์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ์•„ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋Š” ์‚ผ๊ฐํ˜•์˜ ๊ผญ๋Œ€๊ธฐ์—์„œ ๋ฐ”๋‹ฅ๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€๋Š” ๊ฒฝ๋กœ ์ค‘ ์ตœ๋Œ€ ํ•ฉ์„ ๋‚˜ํƒ€๋‚ด๋„๋ก ํ•œ๋‹ค.

 

 

 

์ด์ œ ํ•™๊ธฐ ์‹œ์ž‘ํ–ˆ์œผ๋‹ˆ๊นŒ ์—ด์‹ฌํžˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ฅผ ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋งˆ๊ตฌ๋“ค์—ˆ๋‹ค..!

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณผ์ œ ๋!

 

 

[์ฐธ๊ณ  ์ž๋ฃŒ]

 

https://velog.io/@bye9/%EB%B0%B1%EC%A4%80%ED%8C%8C%EC%9D%B4%EC%8D%AC-1932-%EC%A0%95%EC%88%98-%EC%82%BC%EA%B0%81%ED%98%95

 

[๋ฐฑ์ค€/ํŒŒ์ด์ฌ] 1932 ์ •์ˆ˜ ์‚ผ๊ฐํ˜•

https://www.acmicpc.net/problem/1932๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋‚˜์”ฉ ์ ์–ด๊ฐ€๋ฉด์„œ ๊ทœ์น™์„ ์ฐพ์•˜๋‹ค.ex)d0=7d1=3+7, d1=8+7d2=8+d1, d2=1+max(d1,d1),d2=0+d1d3=2+d2, d3=7+max(d2,d2),d3=4

velog.io