Skip to content

Commit f7cf041

Browse files
authored
Merge pull request #143 from learntosurf/main
[2์›” 3์ฃผ์ฐจ_Week12] ์Šคํ„ฐ๋”” ์ž๋ฃŒ ๊ณต์œ 
2 parents c5fa5cd + 0322b41 commit f7cf041

File tree

4 files changed

+63
-0
lines changed

4 files changed

+63
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
'''
2+
BOJ #1520. ๋‚ด๋ฆฌ๋ง‰๊ธธ (๊ณจ๋“œ3)
3+
https://www.acmicpc.net/problem/1520
4+
์œ ํ˜•: Dynamic Programming, Graph Theory, Graph Traversal, Depth-First Search
5+
'''
6+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
## ๐Ÿš€ 2์›” 3์ฃผ์ฐจ (02/17) ์Šคํ„ฐ๋”” ๋ฐœ์ œ ์ฃผ์ œ: DP
2+
> ๋ฐœ์ œ์ž: ์ •์ˆ˜๋ฏธ
3+
4+
### ๐Ÿ—‚๏ธ ์Šคํ„ฐ๋”” ์ž๋ฃŒ
5+
- PDF: [๋ฐ”๋กœ๊ฐ€๊ธฐ](./Study_BOJ_2169.pdf)
6+
![image](https://github.com/user-attachments/assets/787ac081-bd27-4126-9d2c-3425c9c42127)
7+
8+
9+
### ๐Ÿ“– ๋ฌธ์ œ
10+
- [๋ฐฑ์ค€ #2169. ๋กœ๋ด‡ ์กฐ์ข…ํ•˜๊ธฐ](https://www.acmicpc.net/problem/2169): DP / ๊ณจ๋“œ2
11+
- ์ •๋‹ต ์ฝ”๋“œ: [Study_BOJ_2169_๋กœ๋ด‡์กฐ์ข…ํ•˜๊ธฐ.py](./Study_BOJ_2169_๋กœ๋ด‡์กฐ์ข…ํ•˜๊ธฐ.py)
12+
13+
### ๐Ÿ’ป ๊ณผ์ œ
14+
- [๋ฐฑ์ค€ #1520. ๋‚ด๋ฆฌ๋ง‰๊ธธ](https://www.acmicpc.net/problem/1520): DP, ๊ทธ๋ž˜ํ”„ / ๊ณจ๋“œ3
15+
- ์ •๋‹ต ์ฝ”๋“œ: [Assignment_BOJ_1520_๋‚ด๋ฆฌ๋ง‰๊ธธ.py](./Assignment_BOJ_1520_๋‚ด๋ฆฌ๋ง‰๊ธธ.py)
2.17 MB
Binary file not shown.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
'''
2+
BOJ #2169. ๋กœ๋ด‡ ์กฐ์ข…ํ•˜๊ธฐ(๊ณจ๋“œ2)
3+
https://www.acmicpc.net/problem/2169
4+
์œ ํ˜•: Dynamic Programming
5+
'''
6+
7+
import sys
8+
input = sys.stdin.readline
9+
10+
# ์ž…๋ ฅ
11+
N, M = map(int, input().split()) # ์ง€๋„์˜ ํฌ๊ธฐ
12+
grid = [list(map(int, input().split())) for _ in range(N)] # ๊ฐ ์ง€์—ญ์˜ ๊ฐ€์น˜
13+
14+
# DP ํ…Œ์ด๋ธ”
15+
dp = [[0] * M for _ in range(N)]
16+
17+
# ์ฒซ ๋ฒˆ์งธ ํ–‰ ์ดˆ๊ธฐํ™” (์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ˆ„์ ํ•ฉ)
18+
dp[0][0] = grid[0][0]
19+
for j in range(1, M):
20+
dp[0][j] = dp[0][j-1] + grid[0][j] # (0,1)โ†’(0,2)โ†’(0,3)..
21+
22+
# ๋‘ ๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ (์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ, ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ง„ํ–‰)
23+
for i in range(1, N):
24+
left_to_right = [0] * M
25+
right_to_left = [0] * M
26+
27+
# ์™ผ์ชฝ โ†’ ์˜ค๋ฅธ์ชฝ
28+
left_to_right[0] = dp[i-1][0] + grid[i][0] # ์ฒซ๋ฒˆ์งธ ์—ด์€ ์œ„์ชฝ์—์„œ๋งŒ ์˜ฌ ์ˆ˜ ์žˆ์Œ
29+
for j in range(1, M): # ๋‘๋ฒˆ์งธ ์—ด๋ถ€ํ„ฐ๋Š” ์œ„์ชฝ, ์™ผ์ชฝ์—์„œ ์˜ค๋Š” ๊ฒฝ์šฐ ์ค‘ ์„ ํƒ
30+
left_to_right[j] = max(dp[i-1][j], left_to_right[j-1]) + grid[i][j]
31+
32+
# ์˜ค๋ฅธ์ชฝ โ†’ ์™ผ์ชฝ
33+
right_to_left[M-1] = dp[i-1][M-1] + grid[i][M-1] # ๋งˆ์ง€๋ง‰ ์—ด์€ ์œ„์ชฝ์—์„œ๋งŒ ์˜ฌ ์ˆ˜ ์žˆ์Œ
34+
for j in range(M-2, -1, -1): # ๊ทธ ๋‹ค์Œ ์—ด๋ถ€ํ„ฐ๋Š” ์œ„์ชฝ, ์˜ค๋ฅธ์ชฝ์—์„œ ์˜ค๋Š” ๊ฒฝ์šฐ ์ค‘ ์„ ํƒ
35+
right_to_left[j] = max(dp[i-1][j], right_to_left[j+1]) + grid[i][j]
36+
37+
# ๋‘ ๊ฐœ์˜ ๋ฐฐ์—ด์„ ๋น„๊ตํ•ด dp[i][j] ๊ฐฑ์‹ 
38+
for j in range(M):
39+
dp[i][j] = max(left_to_right[j], right_to_left[j])
40+
41+
# ์ •๋‹ต ์ถœ๋ ฅ
42+
print(dp[N-1][M-1]) # ๋งˆ์ง€๋ง‰ ์œ„์น˜์— ์ €์žฅ๋œ ๊ฐ’์ด ํƒ์‚ฌํ•œ ์ง€์—ญ ๊ฐ€์น˜ ํ•ฉ์˜ ์ตœ๋Œ€๊ฐ’

0 commit comments

Comments
ย (0)