๋ฌธ์
https://www.acmicpc.net/problem/1012
ํ์ด
BFS๋ฅผ ์ฌ์ฉํ ํ์ด
# ๋ฐฑ์ค 1012๋ฒ ๋ฌธ์ - ์ ๊ธฐ๋ ๋ฐฐ์ถ
t = int(input()) #ํ
์คํธ์ผ์ด์ค์ ๊ฐ์
dx = [0,0,-1,1] # ์, ํ, ์ข, ์ฐ
dy = [1,-1,0,0]
def BFS(x,y):
queue = [(x,y)]
cabbage[x][y] = 0 # ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
while queue:
x,y = queue.pop(0)
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx < 0 or nx >= m or ny < 0 or ny >= n:
continue
if cabbage[nx][ny] == 1 :
queue.append((nx,ny))
cabbage[nx][ny] = 0
# ํ๋ ฌ๋ง๋ค๊ธฐ
for i in range(t):
m, n, k = map(int,input().split())
cabbage = [[0]*(n) for _ in range(m)]
cnt = 0
for j in range(k):
x,y = map(int, input().split())
cabbage[x][y] = 1
for a in range(m):
for b in range(n):
if cabbage[a][b] == 1:
BFS(a,b)
cnt += 1
print(cnt)
DFS๋ฅผ ์ฌ์ฉํ ํ์ด
import sys
sys.setrecursionlimit(10000)
def dfs(x, y):
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
# ์,ํ,์ข,์ฐ ํ์ธ
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if (0 <= nx < N) and (0 <= ny < M):
if matrix[nx][ny] == 1:
matrix[nx][ny] = -1
dfs(nx, ny)
T = int(input())
for _ in range(T):
M, N, K = map(int, input().split())
matrix = [[0]*M for _ in range(N)]
cnt = 0
# ํ๋ ฌ ์์ฑ
for _ in range(K):
m, n = map(int, input().split())
matrix[n][m] = 1
for i in range(N): # ํ (๋ฐ๊นฅ ๋ฆฌ์คํธ)
for j in range(M): # ์ด (๋ด๋ถ ๋ฆฌ์คํธ)
if matrix[i][j] > 0:
dfs(i, j)
cnt += 1
print(cnt)
'๐๏ธ Algorithm > ๐ฉ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] [Python] Class2_2108๋ฒ_ํต๊ณํ (0) | 2022.10.26 |
---|---|
[๋ฐฑ์ค] [Python] Class2_1654๋ฒ_๋์ ์๋ฅด๊ธฐ (0) | 2022.10.26 |
[๋ฐฑ์ค] [Python] 10799๋ฒ_์ ๋ง๋๊ธฐ_์คํ (0) | 2022.10.26 |
[๋ฐฑ์ค] [Python] 4949๋ฒ_๊ท ํ์กํ ์ธ์_์คํ (0) | 2022.10.26 |
[๋ฐฑ์ค] [Python] 1966๋ฒ_ํ๋ฆฐํฐ ํ_ํ,๋ฑ (0) | 2022.10.14 |