ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๐ฉ ๋ธ๋ฃจํธํฌ์ค(์์ ํ์)
thinking
์ ๋ฌธ์ ์ ๋๋ก ์์ฝ์ด์ ์ง์กด ์ค๋๊ฑธ๋ ธ๋ค . . . ๐
๋ฌธ์ ์์ ๋งํ๋ฏ, ( e[1][2]+e[2][3]+e[3][1] )
1, 2 -> 2, 3 -> 3, 1 ์ ์์๋ก ์งํ๋๊ธฐ ๋๋ฌธ์ ํ์ฌ y์ธ๋ฑ์ค(์ด)์ ๋ค์ ์์ํ๋ x์ธ๋ฑ์ค(ํ)๋ฅผ ๋์ผํ๊ฒ ๋๊ณ ํ๋ฉด ๋๋ค ! !
์ด๋ ๊ฒ ๊ณ์ ์ด์ด์ง๋ค๊ฐ ์ฒ์ ์ธ๋ฑ์ค์ ๋์ผํด์ง๋ฉด ํจ์๋ฅผ ์ข ๋ฃํ๋ฉด ๋๋ค.
์ต์๊ฐ์ ์ฐพ๋ ๋ฌธ์ ์ด๋ฏ๋ก ๊ธฐ์กด์ ๊ฒฐ๊ณผ๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ์๋ง ํจ์๊ฐ ์งํ๋๋๋ก ์กฐ๊ฑด๋ฌธ์ ๊ฑธ์ด์ฃผ์๋ค.
์ฒ์ ์์์ ๋ฌด์กฐ๊ฑด e[0][1] ๋๋ e[0][2] ๋๋ ... e[0][N-1] ์ด๋ฏ๋ก range๋ (1, N)๊น์ง๋ก ์ฒ๋ฆฌํ๋ค.
์ฝ๋
T = int(input())
# (current, next) = 0,1 -> 1,2 -> 2,0
def dfs(current, tmp):
global res
if tmp < res:
if 0 not in visited[1:]: # ์ ๋ถ ๋ฐฉ๋ฌธํ๋ค๋ฉด
res = min(res, tmp + a[current][0]) # ๊ฒฐ๊ณผ๊ฐ ๊ฐฑ์ ํ๊ณ ํจ์ ์ข
๋ฃ
return
for next in range(1, N):
if a[current][next] != 0 and visited[next] == 0:
visited[next] = 1
dfs(next, tmp + a[current][next])
visited[next] = 0
for tc in range(1, T+1):
N = int(input())
a = [list(map(int, input().split())) for _ in range(N)]
res = 10000
for i in range(1, N):
visited = [0] * N
visited[i] = 1
dfs(i, a[0][i]) # current_y, tmp_sum
print("#{} {}".format(tc, res))
'algorithm > swea' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swea] 5202. ํ๋ฌผ ๋ํฌ / python ํ์ด์ฌ (0) | 2021.04.15 |
---|---|
[swea] 5201. ์ปจํ ์ด๋ ์ด๋ฐ / python ํ์ด์ฌ (0) | 2021.04.15 |
[swea] 5188. ์ต์ํฉ / python ํ์ด์ฌ (0) | 2021.04.15 |
[swea] 5178. ๋ ธ๋์ ํฉ / python ํ์ด์ฌ (0) | 2021.04.09 |
[swea] 5177. ์ด์งํ / python ํ์ด์ฌ (0) | 2021.04.09 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
TAG
- ํ๋ก๊ทธ๋๋จธ์ค
- BFS
- Python
- ์๊ณ ๋ฆฌ์ฆ
- swea
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- ๊ธฐ์ง๊ตญ์ค์น
- merge์๋ฌ
- merge ์๋ฌ
- ์ผ์ฑ๊ธฐ์ถ
- git ๋ฏธ๋ฌ๋ง
- ์์ด๋๋ง์๊ธฐ
- ๋ธ๋ฃจํธํฌ์ค
- react
- dp
- ํ์ด์ฌ
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- dfs
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- 21609 ์์ด ์คํ๊ต
- ๋ฐฑ์ค
- ์ผ์ฑ์ฝํ
- 2018 ์นด์นด์ค ๊ณต์ฑ
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- ๋ณด์์ผํ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
- Total
- Today
- Yesterday
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ