๐๋ฌธ์
https://www.acmicpc.net/problem/17484
๐์๊ณ ๋ฆฌ์ฆ ๋ฐ ์ ๊ทผ
๋ฐฑํธ๋ํน
1. ๋๊น์ง ๋ด๋ ค๊ฐ ๋ด์ผ ์ต์ ์ ๋ฃจํธ์ธ์ง ์ ์ ์๋ค.
2. ๊ฐ์ ๋ฐฉํฅ์ผ๋ก ๋๋ฒ ์ฐ์ ๊ฐ ์ ์๋ค. ๋ฐ๋ผ์ ๊ฐ์ ๋ฐฉํฅ์ผ ๊ฒฝ์ฐ ํ์์ ๋ฉ์ถ๋๋ก ๋ฐฑํธ๋ํน์ ์ฌ์ฉํ๋ค.
๐ป์ฝ๋
# 17484 ์ง์ฐ์ ๋ฌ ์ฌํ
# ๋ฐฑํธ๋ํน ํจ์ ๊ตฌํ
def dfs(x,y,depth,derection,cnt):
global money
# ํ๋ ฌ ๋งจ ์๋ ํ๊น์ง ํ์ ํ ๊ทธ ๋์ ๋ค์๋ ๋น์ฉ๊ณผ ํ์ฌ ์ต์๊ฐ์ด ์ ์ฅ๋์ด์๋ money์ ๋น๊ต
if depth == n:
money = min(money,cnt)
return
for i in range(3): # 3๋ฐฉํฅ์ผ๋ก ํ์ ์์
if derection == i: # ๊ฐ์ ๋ฐฉํฅ์ผ ๋๋ continue
continue
nx = x + dx[i]
ny = y + dy[i]
if nx < 0 or nx > (n-1) or ny < 0 or ny > (m-1):
continue
dfs(nx,ny,depth+1,i,cnt+graph[nx][ny])
return
# 1. ์
๋ ฅ๋ฐ๊ธฐ
n,m = map(int,input().split())
graph = [list(map(int,input().split())) for i in range(n)]
# ๋๊ฐ์ ์ผ์ชฝ์๋, ์๋, ๋๊ฐ์ ์ค๋ฅธ์ชฝ์๋ ๋ฐฉํฅ
dx = [1,1,1]
dy = [-1,0,1]
money = 600 # n์ด ์ต๋ 6์ด๋ฏ๋ก ๊ฐ ์
๋น 100 ๊ณฑํ๋ฉด ์ต๋ 600 ๋์ฌ ์ ์๋ค.
for i in range(m):
dfs(0,i,1,-1,graph[0][i]) # ์ฒซ๋ฒ์งธ ํ ๊ฐ ์ด์์ ์ถ๋ฐ
print(money)
๐์ฝ๋ ์ค๋ช
์ฃผ์์ผ๋ก ์ค๋ช ์ ๋์ฒดํ๋ค.
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2531 ํ์ ์ด๋ฐฅ(ํ์ด์ฌ/python) (0) | 2023.08.23 |
---|---|
[๋ฐฑ์ค] 14940 ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ(ํ์ด์ฌ/python) (0) | 2023.08.21 |
[๋ฐฑ์ค] 2638 ์น์ฆ(ํ์ด์ฌ/python) (0) | 2023.08.18 |
[๋ฐฑ์ค] 14940 ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ(ํ์ด์ฌ/python) (0) | 2023.08.17 |
[๋ฐฑ์ค] 16985 Maaaaaaaaaze(ํ์ด์ฌ/python) (0) | 2023.08.16 |