๐ก ์กฐ๊ฑด
- ํต๋ก์ ์ธ๋ก ๊ธธ์ด
N(1 โค N โค 100)
ํต๋ก์ ๊ฐ๋ก ๊ธธ์ด M(1 โค M โค 100)
์์๋ฌผ ์ฐ๋ ๊ธฐ์ ๊ฐ์ K(1 โค K โค NรM)
K
๊ฐ์ ์ค์ ์์๋ฌผ์ด ๋จ์ด์ง ์ขํ (r, c)
- DFS ์ ํ์ ๋ฌธ์ (๊น์ด์ฐ์ ํ์)
๐ฅ ์์ค ์ฝ๋
from sys import stdin, setrecursionlimit
setrecursionlimit(10 ** 9)
n, m, k = map(int, stdin.readline().split())
arr = [[0] * (m + 1) for _ in range(n + 1)]
food_t = []
for _ in range(k):
x, y = map(int, stdin.readline().split())
arr[x][y] = 1
food_t.append((x, y))
answer = -1e9
dx, dy = [1, -1, 0, 0], [0, 0, -1, 1]
def dfs(x, y):
global res
if x < 0 or y < 0 or x > n or y > m:
return
if arr[x][y] == 1:
arr[x][y] = 0
res += 1
for i in range(4):
dfs(x + dx[i], y + dy[i])
return
for x, y in food_t:
res = 0
dfs(x, y)
answer = max(res, answer)
print(answer)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
3 4 5
3 2
2 2
3 1
2 3
1 1
์คํ๊ฒฐ๊ณผ
4
โจ๏ธ ๋ฌธ์ ํ์ด
m * n
ํฌ๊ธฐ์ ๋งต์ ๋ง๋ค์ด 0์ผ๋ก ๋๋ฐฐ๋ฅผ ํ ํ, ์ฐ๋ ๊ธฐ๊ฐ ์๋ ๊ณณ์ ์ขํ๋ฅผ ๋ฐ์ 1์ด๋ผ๊ณ ํ์ํ๋ค.
์ฐ๋ ๊ธฐ๊ฐ ์๋ ์ขํ๋ ๋ฐ๋ก foot_t
๋ผ๋ ๋ณ์์ ๋ด์๋ค.
food_t
๋ฅผ ์ํํ๋ฉด์ ์ด๋ ์ขํ์์ ๊ฐ์ฅ ์ฐ๋ ๊ธฐ๊ฐ ํฌ๊ฒ ๋๋์ง ๊น์ด ์ฐ์ ํ์์ ํตํด ๊ณ์ฐํด์ค๋ค.
๐พ ๋๋์
- recursive ์ ์ฝ์ด ์์ด,
setrecursionlimit
ํจ์๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋งค์ผ ๊น๋จน๋๋ค. ์กฐ์ฌํด์ผ๊ฒ ๋ค.
- DFS๋ก ํ๋ฒ, BFS๋ก ํ๋ฒ ํ์ด๋ณด์๋ค. ์ด๋ฐ ๋ฌธ์ ๊ฐ ๊ฐ์ฅ ์ซ์์๋๋ฐ ์ง๊ธ์ ๊ฐ์ฅ ์ข๋ค.