2021. 4. 14. 12:21ใ๐ Algorithm/๐ช๐ป Python ๋ฌธ์ ํ์ด
๋ฌธ์ ์ค๋ช
ํฌ๊ธฐ๊ฐ N×M์ธ ๊ฒฉ์ํ์ ๊ฐ ์นธ์ ์ ์๊ฐ ํ๋์ฉ ๋ค์ด์๋ค. ์ด ๊ฒฉ์ํ์์ ์นธ K๊ฐ๋ฅผ ์ ํํ ๊ฒ์ด๊ณ , ์ ํํ ์นธ์ ๋ค์ด์๋ ์๋ฅผ ๋ชจ๋ ๋ํ ๊ฐ์ ์ต๋๊ฐ์ ๊ตฌํ๋ ค๊ณ ํ๋ค. ๋จ, ์ ํํ ๋ ์นธ์ด ์ธ์ ํ๋ฉด ์๋๋ค. rํ c์ด์ ์๋ ์นธ์ (r, c)๋ผ๊ณ ํ์ ๋, (r-1, c), (r+1, c), (r, c-1), (r, c+1)์ ์๋ ์นธ์ด ์ธ์ ํ ์นธ์ด๋ค.
์ ํ ์ฌํญ
- 1 ≤ N, M ≤ 10
- 1 ≤ K ≤ min(4, N×M)
- ๊ฒฉ์ํ์ ๋ค์ด์๋ ์๋ -10,000๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 10,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค.
- ํญ์ K๊ฐ์ ์นธ์ ์ ํํ ์ ์๋ ๊ฒฝ์ฐ๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
์ ๋ ฅํ์
์ฒซ์งธ ์ค์ N, M, K๊ฐ ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฒฉ์ํ์ ๋ค์ด์๋ ์๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅํ์
์ ํํ ์นธ์ ๋ค์ด์๋ ์๋ฅผ ๋ชจ๋ ๋ํ ๊ฐ์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์์
ํ์ด ๊ณผ์
๋ฐฑํธ๋ํน์ ์ด์ฉํ์ฌ ํ ์ ์๋ ๋ฌธ์ ์๋ค. ์ฒ์์ ๋ฌธ์ ๋ฅผ ํ๋ ์ต๋๊ฐ์ ๊ตฌํ๋ ๊ฑธ ๋ณด๊ณ bfs๋ก ํ ์ ์์๊ฑฐ ๊ฐ์์ bfs๋ก ์ ๊ทผํ์ง๋ง, 2*2 ๋ฐฐ์ด์ ๊ฒฐ๊ณผ๊ฐ ์ ๋์์ง๋ง 3๊ฐ๋ฅผ ๊ณ ๋ฅด๋ ๋ฌธ์ ๋ถํฐ ์ ๋ต์ ๊ทผ์ ํ ์ ์์๋ค. ๊ทธ๋์ dfs๋ก ๋ค์ ์ ๊ทผํด์ ํ ์ ์์๋ค. x,y๋ฅผ ๋ชจ๋ ์กฐํฉํด์ผ๋๋ ๋ฌธ์ ๋ผ์ ๋ณต์กํ๋ค. ํ์ง๋ง 2์ฐจ์ for๋ฌธ์ ์ด์ฉํ์ฌ ํ๊ณ , ์ํ์ข์ฐ ์ค ์๋,์ค๋ฅธ์ชฝ์ผ๋ก๋ง ์ด๋ํ ์ ์๊ฒ ํ์ฌ ๋ณต์ก์ฑ์ ์ค์๊ณ , ์ ํ๋ i,j ์ ๊ฐ์ ์ํ์ข์ฐ๊ฐ ๋ชจ๋ False์ฌ์ผ ๋๋ฏ๋ก ์ํ์ข์ฐ๋ฅผ ์ด๋ํ ์ ์๋ dxy ๋ฅผ ๋ง๋ค์ด nx,ny์ ๊ฐ์ด ๋ชจ๋ False์ผ ๋๋ง ๋ค์ dfs๋ฅผ ์คํํ๋๋ก ๊ตฌํํ๋ค.
def dfs(x, y, cnt, sum_value):
dxy = [(-1, 0), (1, 0), (0, 1), (0, -1)]
if cnt == k:
global max_value
max_value = max(max_value, sum_value)
return
for i in range(x, n):
for j in range(y if i == x else 0, m):
if check[i][j]:
continue
for dx, dy in dxy:
nx, ny = i + dx, j + dy
if 0 <= nx < n and 0 <= ny < m and check[nx][ny]:
break
else:
check[i][j] = True
dfs(i, j, cnt + 1, sum_value + item[i][j])
check[i][j] = False
if __name__ == '__main__':
n, m, k = map(int, input().split())
item = []
for _ in range(n):
item.append(list(map(int, input().split())))
max_value = 0
check = [[False for _ in range(m)] for _ in range(n)]
dfs(0, 0, 0, 0)
print(max_value)
'๐ Algorithm > ๐ช๐ป Python ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python - ๋ฐฑ์ค 14501] ํด์ฌ (0) | 2021.04.14 |
---|---|
[Python - ๋ฐฑ์ค 13458] ์ํ๊ฐ๋ (0) | 2021.03.31 |
[Python - ๋ฐฑ์ค 13460] ๊ตฌ์ฌ ํ์ถ2 (0) | 2021.03.29 |