Skip to content

Commit 8348f16

Browse files
authored
Merge pull request #146 from YoonYn9915/main
YoonYn9915/ 2์›” 3์ฃผ์ฐจ/ 3๊ฐœ
2 parents 8ca2278 + 790ec5f commit 8348f16

3 files changed

+87
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
T = int(input())
2+
dp = [[0] * 30 for _ in range(30)]
3+
for i in range(30):
4+
for j in range(30):
5+
if i == 1:
6+
dp[i][j] = j
7+
else:
8+
if i == j:
9+
dp[i][j] = 1
10+
elif i < j:
11+
dp[i][j] = dp[i-1][j-1] + dp[i][j-1]
12+
13+
for _ in range(T):
14+
N, M = list(map(int, input().split()))
15+
print (dp[N][M])
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import sys
2+
3+
input = sys.stdin.readline
4+
sys.setrecursionlimit(10 ** 8)
5+
n, m = map(int, input().split())
6+
graph = []
7+
8+
moves = [
9+
[1, 0],
10+
[0, 1],
11+
[-1, 0],
12+
[0, -1]
13+
]
14+
15+
visited = [[-1] * m for _ in range(n)]
16+
for _ in range(n):
17+
graph.append(list(map(int, input().split())))
18+
19+
20+
def dfs(x, y):
21+
# Base Case
22+
if x == n - 1 and y == m - 1:
23+
return 1
24+
25+
# ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๊ณณ์ผ ๋•Œ
26+
if visited[x][y] != -1:
27+
return visited[x][y]
28+
29+
visited[x][y] = 0
30+
31+
for move in moves:
32+
nx, ny = x + move[0], y + move[1]
33+
34+
if 0 <= nx < n and 0 <= ny < m:
35+
if graph[x][y] > graph[nx][ny]:
36+
visited[x][y] += dfs(nx, ny)
37+
38+
return visited[x][y]
39+
40+
41+
print(dfs(0, 0))
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import sys
2+
3+
input = sys.stdin.readline
4+
5+
N, M = map(int, input().split())
6+
arr = []
7+
for i in range(N):
8+
arr.append(list(map(int, input().split())))
9+
10+
# ์ฒซ๋ฒˆ์งธ ํ–‰์˜ ์ตœ๋Œ€๊ฐ€์น˜๋Š” ์™ผ์ชฝ์—์„œ ์˜ค๋Š” ๋ฐฉํ–ฅ๋ฐ–์— ์—†์Œ
11+
for i in range(1, M):
12+
arr[0][i] += arr[0][i - 1]
13+
14+
for i in range(1, N):
15+
# ์œ„์ชฝ, ์™ผ์ชฝ์—์„œ ์˜ค๋Š” ๊ฒฝ๋กœ์˜ ์ตœ๋Œ€ ๊ฐ€์น˜ ์ €์žฅ
16+
dp1 = arr[i][:]
17+
# ์œ„์ชฝ, ์˜ค๋ฅธ์ชฝ์—์„œ ์˜ค๋Š” ๊ฒฝ๋กœ์˜ ์ตœ๋Œ€ ๊ฐ€์น˜ ์ €์žฅ
18+
dp2 = arr[i][:]
19+
for j in range(M):
20+
if j == 0:
21+
# ์ฒซ๋ฒˆ์งธ ํ–‰์€ ์™ผ์ชฝ์—์„œ ์˜ค๋Š” ๊ฒฝ๋กœ๊ฐ€ ์—†์Œ
22+
dp1[j] += arr[i - 1][j]
23+
dp2[M - 1 - j] += arr[i - 1][M - 1 - j]
24+
else:
25+
# ์œ„์—์„œ ์˜ค๊ฑฐ๋‚˜ ์™ผ์ชฝ์—์„œ ์˜ค๋Š” ๊ฒƒ ์ค‘ ์ตœ๋Œ€๊ฐ’
26+
dp1[j] += max(arr[i - 1][j], dp1[j - 1])
27+
# ์œ„์—์„œ ์˜ค๊ฑฐ๋‚˜ ์˜ค๋ฅธ์ชฝ์—์„œ ์˜ค๋Š” ๊ฒƒ ์ค‘ ์ตœ๋Œ€๊ฐ’
28+
dp2[M - 1 - j] += max(arr[i - 1][M - 1 - j], dp2[M - j])
29+
for j in range(M):
30+
arr[i][j] = max(dp1[j], dp2[j])
31+
print(arr[-1][-1])

0 commit comments

Comments
ย (0)