๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[๊ฐ„๋‹จํ•œ DFS] ์–ผ์Œ ๋ฌธ์ œ ๋ณธ๋ฌธ

๐Ÿฆฅ ์ฝ”ํ…Œ

[๊ฐ„๋‹จํ•œ DFS] ์–ผ์Œ ๋ฌธ์ œ

์ง•์ง•์•ŒํŒŒ์นด 2023. 4. 12. 01:26
728x90
๋ฐ˜์‘ํ˜•
์ฐธ๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค
https://doyyy.tistory.com/144
์–ผ์Œ ๋ฌธ์ œ
N X M ํฌ๊ธฐ์˜ ์–ผ์Œ ํ‹€
๊ตฌ๋ฉ์ด ๋šซ๋ ค ์žˆ๋Š” ๋ถ€๋ถ„์€ 0, ์นธ๋ง‰์ด๊ฐ€ ์กด์žฌํ•˜๋Š” ๋ถ€๋ถ„์€ 1
๊ตฌ๋ฉ์ด ๋šซ๋ ค์žˆ๋Š” ๋ถ€๋ถ„๋ผ๋ฆฌ ์ƒ, ํ•˜, ์ขŒ, ์šฐ๋กœ ๋ถ™์–ด์žˆ๋Š” ๊ฒฝ์šฐ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ
์ด ๋•Œ ์–ผ์Œ ํ‹€์˜ ๋ชจ์–‘์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ์ƒ์„ฑ๋˜๋Š” ์ด ์•„์ด์Šคํฌ๋ฆผ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ
# N X M ์–ผ์Œ ํ‹€
n, m = map(int, input().split())
# ์–ผ์Œ ํ‹€ ์ •๋ณด
graph = [list(map(int, input())) for _ in range(n)]

def dfs(x, y):
	# ๋ฒ”์œ„์— ๋ฒ—์–ด๋‚˜๋ฉด False
	if x < 0 or x >= n or y < 0 or y >= m:
		return False
	# ๊ตฌ๋ฉ ๋šซ๋ฆผ
	if graph[x][y] == 0:
		graph[x][y] = 1
		# ์ƒ, ํ•˜, ์ขŒ, ์šฐ๋กœ ๋ถ™์–ด์žˆ๋Š” ๊ฒฝ์šฐ ์„œ๋กœ ์—ฐ๊ฒฐ
		dfs(x+1, y)
		dfs(x-1, y)
		dfs(x, y+1)
		dfs(x, y-1)
		return True
	# ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ์ผ ๊ฒฝ์šฐ False
	return False

result = 0
for i in range(n):
	for j in range(m):
		if dfs(i,j) == True:
			result += 1
print(result)
728x90
๋ฐ˜์‘ํ˜•
Comments