ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๐ฉ ๋ธ๋ฃจํธํฌ์ค(์์ ํ์)
thinking
๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๋ค์, ์ต์๊ฐ์ ๊ตฌํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค.
์ต์
์ ๊ฒฝ์ฐ (2N!/N!*N!)*T
= 10,400,600*50 = 520,030,000 ๋ฒ์ ์ฐ์ฐ์ ํด์ ๊ทธ๋ฐ๊ฒ ๊ฐ๋ค.
๊ทธ๋์ ์ ์ด์ ๋ถ๋ถํฉ์ด ๊ฒฐ๊ณผ๊ฐ๋ณด๋ค ํฌ๋ฉด ํจ์๊ฐ ๋๋๋๋ก ์ฒ๋ฆฌํด์คฌ๋ค.
ํ์ฌ ์ขํ๋ฅผ ํจ์์ ์ธ์๋ก ๋ฐ์, ๋ฐฉ๋ฌธํ์ ์ด ์๋ค๋ฉด ๋ฐฉ๋ฌธ์ฒดํฌ ํ ํฉ์ ๋ํ๋ฉฐ ์ฌ๊ท์ ์ผ๋ก ํจ์๊ฐ ๋์๊ฐ๋๋ก ๊ตฌ์ฑํ๋ค.
์ฝ๋
T = int(input())
dx = [0, 1]
dy = [1, 0]
def dfs(x, y):
global res, tmp
if res < tmp: # ํ์ฌ ๊ฒฐ๊ณผ๊ฐ ๋ณด๋ค ํฌ๋ฉด ํจ์ ๋๋๋๋ก -> ์ ํ์๊ฐ๋๋ฌธ์ ๊ฐ์ง์น๊ธฐ ํด์ผํจ
return
if x == N-1 and y == N-1:
res = tmp
return
for d in range(2):
nx = x + dx[d]
ny = y + dy[d]
if nx<0 or nx>=N or ny<0 or ny>=N:
continue
if (nx, ny) not in visited:
visited.append((nx, ny)) # ์ขํ ์
๋ก๋
tmp += a[nx][ny]
dfs(nx, ny)
tmp -= a[nx][ny] # ์์๋ณต๊ตฌ
visited.remove((nx, ny))
for tc in range(1, T+1):
N = int(input())
a = [list(map(int, input().split())) for _ in range(N)]
visited = []
res = 3000
tmp = a[0][0]
dfs(0, 0) # ํ์ฌ์ขํ
print("#{} {}".format(tc, res))
'algorithm > swea' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swea] 5201. ์ปจํ ์ด๋ ์ด๋ฐ / python ํ์ด์ฌ (0) | 2021.04.15 |
---|---|
[swea] 5189. ์ ์์นดํธ / python ํ์ด์ฌ (0) | 2021.04.15 |
[swea] 5178. ๋ ธ๋์ ํฉ / python ํ์ด์ฌ (0) | 2021.04.09 |
[swea] 5177. ์ด์งํ / python ํ์ด์ฌ (0) | 2021.04.09 |
[swea] 5176. ์ด์งํ์ / python ํ์ด์ฌ (0) | 2021.04.09 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
TAG
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- Python
- 21609 ์์ด ์คํ๊ต
- ์ผ์ฑ๊ธฐ์ถ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์์ด๋๋ง์๊ธฐ
- ์ผ์ฑ์ฝํ
- merge ์๋ฌ
- BFS
- ์๊ณ ๋ฆฌ์ฆ
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- dfs
- git ๋ฏธ๋ฌ๋ง
- ๋ฐฑ์ค
- 2018 ์นด์นด์ค ๊ณต์ฑ
- react
- merge์๋ฌ
- ๋ณด์์ผํ
- ํ์ด์ฌ
- ๋ธ๋ฃจํธํฌ์ค
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- swea
- ๊ธฐ์ง๊ตญ์ค์น
- dp
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
- Total
- Today
- Yesterday
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ