๋ค์ด์๋ชฌ๋ ๊ด์ฐ์ 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง Rํ* C์ด ํฌ๊ธฐ์ ๋ฐฐ์ด์ด๋ค.
๋ค์ด์๋ชฌ๋๋ 1๋ก ์ด๋ฃจ์ด์ง ์ ์ฌ๊ฐํ์ ๊ฒฝ๊ณ์ ์ 45๋ ํ์ ์ํจ ๋ชจ์์ด๋ค. ํฌ๊ธฐ๊ฐ 1, 2, 3์ธ ๋ค์ด์๋ชฌ๋ ๋ชจ์์ ๋ค์๊ณผ ๊ฐ์ด ์๊ฒผ๋ค.
๋ค์ด์๋ชฌ๋ ๊ด์ฐ์์ ๊ฐ์ฅ ํฐ ๋ค์ด์๋ชฌ๋์ ํฌ๊ธฐ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
size 1: size 2: size 3:
1
1 1 1
1 1 1 1 1
1 1 1
1
์ฒซ์งธ ์ค์ R๊ณผ C๊ฐ ์ฃผ์ด์ง๋ค. R๊ณผ C๋ 750๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ R๊ฐ์ ์ค์๋ ๋ค์ด์๋ชฌ๋ ๊ด์ฐ์ ๋ชจ์์ด ์ฃผ์ด์ง๋ค.
์ฒซ์งธ ์ค์ ๋ค์ด์๋ชฌ๋ ๊ด์ฐ์์ ๊ฐ์ฅ ํฐ ๋ค์ด์๋ชฌ๋์ ํฌ๊ธฐ๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ๋ค์ด์๋ชฌ๋๊ฐ ์์ ๋๋ 0์ ์ถ๋ ฅํ๋ค.
7ํธ๋ ์ข์ ์๊ฐ์ด ๋ฌ์ด์. ๊ทธ๋ง ๋ฌ์ผ๋ฉด.6ํธ ๋๊ฐ์ ์ํ์ํ๋ฅผ ๊ฐ๋ก๋ก ํ๋๊น ๊ฐ์๋ฅผ ์ธ๊ณ dp๋ ๋ฉ๋ชจ๋ฅผ ๋น ๋ฅด๊ฒ ๊ธฐ๋กํ๋๋ฐ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
๊ทธ๋ฆฌ๊ณ ์ง๊ธ๊น์ง โ๏ธ๋ฐฉํฅ ์ ๋ณด๋ฅผ ์ป์ผ๋ ค๋ฉด ๊ทธ ๋ฐฉํฅ์ผ๋ก ๋๊น์ง 1์ ์ผ ํ ์์์น ๋์์ ๊ฐ์๋ฅผ ๊ธฐ๋กํ๋๋ฐ 1์ ์ธ๊ธฐ ์ํด ํ์ํ ์๋ฆฌ์ ์๋ฌด ์ ๋ณด๊ฐ ๋จ์ง ์๋๋ค. ์ด์ ํ์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค๋ ์ฝ๋๋ฅผ ์งฐ์ง๋ง ๋นํจ์จ์ ์ด๋ค. ํด๊ฒฐํ๋ ค๊ณ ํ๋ ์ ์ ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ค.
1ํธ~5ํธ ๊น์ง์ ์ฝ๋์ ๊ทธ๋ฆผ์ ์ดํด๋ณด๋ค๊ฐ ์๋ก์ด ์์ด๋์ด๊ฐ ๋ ์ฌ๋๋ค!
๋ฐ๋ก ๋๊ฐ์ ์ ๋ณด๊ฐ ์ค์ํ๋๊น ๋๊ฐ์ ์ผ๋ก 2d array๋ฅผ ์ํํ๋ ๊ฒ์ด๋ค.
๋๊ฐ์ ์ผ๋ก ๊ฐ๋ฉด ๋ง์ฃผ ๋ณด๋ ๋ ๋ฐฉํฅ์ ํ ๋ฒ์ ์ธก์ ํ ์ ์์ ๊ฒ ๊ฐ๋ค.

๊ฒ๋ค๊ฐ ๋๊ฐ์ ์ํ๋ฅผ ํ๋ฉด์ ์ ๋ ์ ๋ณด ์ญ๋ฐฉํฅ์ผ๋ก ์ธ์ด ๋ฒ๋ฆฌ๋ฉด ์ต์ข ๋ช ๊ฐ ์ฐ์์ผ๋ก ๋์ฌ์ง ๊ณ ๋ฏผํ์ง ์๊ณ ๋ฉ๋ชจ๋ฆฌ์ 1,2,3,4 ์์ฐจ ๊ธฐ๋กํด ๋ฒ๋ฆฌ๋ฉด ๋๋ค. ์ด ์ ๋ณด๋ฅผ ์ญ๋ฐฉํฅ์์ ์ด์ฉํ๋ฉด ํด๋น ๋ฐฉํฅ์ ์์ 1์ด ๋ช ๊ฐ ์๋์ง ์๋ ค์ฃผ๋ ๋ฏธ๋ ์ ๋ณด๊ฐ ๋๋ค.

์ ๊ทธ๋ฆผ์ฒ๋ผ ํ๋ฉด 4๋ฐฉํฅ ํ์์ 2๋ฐฉํฅ์ผ๋ก ์ค์ผ ์๋ ์์ ๊ฒ ๊ฐ๋ค. ์ฐ์ ๊ธฐ๋ก์ด ๋๋๋ฉด ์ฐ์ ๊ธฐ๋ก ํ์๋งํผ ์ญ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ฉด์ ๊ฐ์๋ฅผ ๊ธฐ๋กํด์ฃผ๋ฉด ๋ ๊ฒ์ ํ์๋ฅผ ์ค์ผ ์ ์๋ค!
def sw_topdn(arr):
h, w = len(arr), len(arr[0])
for sumid in range(h + w - 1):
for y in range(h):
x = sumid - y
if 0 <= x < w:
print(arr[y][x],end=' ')
print()
def ne_topdn(arr):
h, w = len(arr), len(arr[0])
for sumid in range(h + w - 1):
for y in range(h - 1, -1, -1):
x = w - 1 - (sumid - y)
if 0 <= x < w:
print(arr[y][x],end=' ')
print()
matrix = [[f"{x}{y}" for x in range(5)]
for y in range(7)]
print(*matrix,sep="\\n")
print("# ๋จ์์ชฝ์ผ๋ก ํ๋ค์ด ์ํ")
sw_topdn(matrix)
print()
print("# ๋ถ๋์ชฝ์ผ๋ก ํ๋ค์ด ์ํ")
ne_topdn(matrix)
['00','10','20','30','40']
['01','11','21','31','41']
['02','12','22','32','42']
['03','13','23','33','43']
['04','14','24','34','44']
['05','15','25','35','45']
['06','16','26','36','46']
# ๋จ์์ชฝ์ผ๋ก ํ๋ค์ด ์ํ
00
10 01
20 11 02
30 21 12 03
40 31 22 13 04
41 32 23 14 05
42 33 24 15 06
43 34 25 16
44 35 26
45 36
46
# ๋ถ๋์ชฝ์ผ๋ก ํ๋ค์ด ์ํ
40
41 30
42 31 20
43 32 21 10
44 33 22 11 00
45 34 23 12 01
46 35 24 13 02
36 25 14 03
26 15 04
16 05
06
์ข ๋ ๋นจ๋ผ์ง๊น๋ด ๋ ๋๊ฐ์ ์ํ ํจ์๋ฅผ ํฉ์ณค๋๋ฐโฆ ์ค๋ฒํค๋๋ ์ค์๋์ง ๋ชฐ๋ผ๋ ๊ฐ๋ ์ฑ๋ ์ ์ข๊ณ ๋๋ฌด ๋ณต์กํ๋คโฆ.๋ฒฝ์์ ์นด์ดํ ์ด ์ ๋๋ ์ค๋ฅ๊ฐ ์์๋๋ฐ ๋ฒ๊ทธ ์ก๋๋ผ ์ค๋ ๊ฑธ๋ ธ๋คโฆ ์ด๋ ๊ฒ ์ง๋ฉด ์๋ฌด๋ ๋ชป ์์๋ณผ ๊ฒ ๊ฐ๋ค.
def sw_nw_topdn(arr,h,w,dp): # ๋จ๋ ๋ถ์ ๋ฐฉํฅ์ผ๋ก ๋์์ 2D array์ํํ๋ ์ฝ๋
sw,se,ne,nw = 0,1,2,3 # ๋ฐฉํฅ์ ํท๊ฐ๋ฆด๊น๋ด ์ซ์ ์ฃผ์ ๋์ ๋ณ์๋ช
์ฌ์ฉ
for sumid in range(h + w - 1): # ์ธ๋ฑ์ค ํฉ์ ๋๋ ค๊ฐ๋ฉด์ ์ํ
combo_sw,combo_nw = 0,0 # 1๊ฐ์ ์ธ๊ธฐ ๋ณ์ ์ด๊ธฐํ
for y1 in range(h):
x1 = sumid - y1
if 0 <= x1 < w:
print(arr[y1][x1],end=' ')
if arr[y1][x1]==1:
combo_sw+=1
dp[y1][x1][ne]=combo_sw
if 0 == x1 or y1 == h-1:
for i in range(combo_sw):
dp[y1-i][x1+i][sw]= i+1
combo_sw=0
else:
if combo_sw>0:
for i in range(1,combo_sw+1):
dp[y1-i][x1+i][sw]= i
combo_sw=0
y2 = h-y1-1
x2 = w - 1 - (sumid - y2)
if 0 <= x2 < w:
print(arr[y2][x2],end=' ')
if arr[y2][x2]==1:
combo_nw+=1
dp[y2][x2][se]=combo_nw
if 0 == x2 or 0 == y2:
for i in range(combo_nw):
dp[y2+i][x2+i][nw]= i+1
combo_nw=0
else:
if combo_nw>0:
for i in range(1,combo_nw+1):
dp[y2+i][x2+i][nw]= i
combo_nw=0
print()
import random
#matrix = [[f"{10*x+y:02d}" for x in range(5)] for y in range(5)]
matrix = [[1 for x in range(6)] for y in range(6)]
#matrix = [[random.randint(0,1) for x in range(8)] for y in range(23)]
h,w = len(matrix),len(matrix[0])
dp=[[[0,0,0,0] for _ in range(w)] for _ in range(h)]
print(*matrix,sep="\\n")
sw_nw_topdn(matrix,h,w,dp)
print(*dp,sep="\\n")
[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
#์ฝ๋๋ก ์์ฑ๋ ๋ฐฐ์ด์ ๋ชจ์ต
1 1 # ๋จ๋, ๋ถ์๋ฐฉํฅ์ผ๋ก ๋์์
1 1 1 1 # ๋ฐฐ์ด์ ์ฝ์ด์ ์๊ธด ํจํด
1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1
1 1
[[1, 6, 1, 1], [2, 5, 1, 1], [3, 4, 1, 1], [4, 3, 1, 1], [5, 2, 1, 1], [6, 1, 1, 1]]
[[1, 5, 2, 1], [2, 5, 2, 2], [3, 4, 2, 2], [4, 3, 2, 2], [5, 2, 2, 2], [5, 1, 1, 2]]
[[1, 4, 3, 1], [2, 4, 3, 2], [3, 4, 3, 3], [4, 3, 3, 3], [4, 2, 2, 3], [4, 1, 1, 3]]
[[1, 3, 4, 1], [2, 3, 4, 2], [3, 3, 4, 3], [3, 3, 3, 4], [3, 2, 2, 4], [3, 1, 1, 4]]
[[1, 2, 5, 1], [2, 2, 5, 2], [2, 2, 4, 3], [2, 2, 3, 4], [2, 2, 2, 5], [2, 1, 1, 5]]
[[1, 1, 6, 1], [1, 1, 5, 2], [1, 1, 4, 3], [1, 1, 3, 4], [1, 1, 2, 5], [1, 1, 1, 6]]
##๋๋์ด ์์ฑ๋ dp์ง๋!!