๋ฌธ์
https://www.acmicpc.net/problem/10026
10026๋ฒ: ์ ๋ก์์ฝ
์ ๋ก์์ฝ์ ๋นจ๊ฐ์๊ณผ ์ด๋ก์์ ์ฐจ์ด๋ฅผ ๊ฑฐ์ ๋๋ผ์ง ๋ชปํ๋ค. ๋ฐ๋ผ์, ์ ๋ก์์ฝ์ธ ์ฌ๋์ด ๋ณด๋ ๊ทธ๋ฆผ์ ์๋ ์ฌ๋์ด ๋ณด๋ ๊ทธ๋ฆผ๊ณผ๋ ์ข ๋ค๋ฅผ ์ ์๋ค. ํฌ๊ธฐ๊ฐ N×N์ธ ๊ทธ๋ฆฌ๋์ ๊ฐ ์นธ์ R(๋นจ๊ฐ), G(์ด๋ก)
www.acmicpc.net
ํ์ด
BFS๋ฅผ ์ด์ฉํ ํ์ด
# ๋ฐฑ์ค 10026๋ฒ ๋ฌธ์ - ์ ๋ก์์ฝ
from collections import deque
dx, dy = [0,0,-1,1], [1,-1,0,0]
n = int(input())
graph = []
for _ in range(n):
graph.append(list(map(str, input())))
answer = 0
def bfs(x, y):
queue = deque()
queue.append((x,y))
visited[x][y] = 1
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
# ์ธ๋ฑ์ค ๋ฒ์ ์์ ์์ผ๋ฉด์, ๊ฐ์ ์์ด๋ฉด์, ๋ฐฉ๋ฌธ ์ํ ๊ฒฝ์ฐ
if 0<=nx<n and 0<=ny<n and graph[nx][ny] == graph[x][y] and visited[nx][ny] == 0:
visited[nx][ny] = 1
queue.append((nx, ny))
# ์ ๋ก์๋งน์ด ์๋ ์ฌ๋
visited = [[0]*(n) for _ in range(n)]
answer1 = 0
for i in range(n):
for j in range(n):
if visited[i][j] == 0:
bfs(i,j)
answer1 += 1
# ์ ๋ก์๋งน์ธ ์ฌ๋
visited = [[0]*(n) for _ in range(n)]
answer2 = 0
for i in range(n):
for j in range(n):
if graph[i][j] == 'G':
graph[i][j] = 'R'
for i in range(n):
for j in range(n):
if visited[i][j] == 0:
bfs(i, j)
answer2 += 1
print(answer1, answer2)
DFS๋ฅผ ์ด์ฉํ ํ์ด
# DFS
from collections import deque
import sys
sys.setrecursionlimit(1000000)
dx, dy = [0,0,-1,1], [1,-1,0,0]
n = int(input())
graph = [list(map(str, input())) for _ in range(n)]
def dfs(x, y):
visited[x][y] = 1
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0<= nx < n and 0 <= ny < n and graph[nx][ny] == graph[x][y] and visited[nx][ny] == 0:
dfs(nx,ny)
# ์ ๋ก์๋งน์ด ์๋ ๊ฒฝ์ฐ
visited = [[0]*(n) for _ in range(n)]
answer1 = 0
for i in range(n):
for j in range(n):
if visited[i][j] == 0:
dfs(i,j)
answer1 += 1
# ์ ๋ก์๋งน์ธ ๊ฒฝ์ฐ
visited = [[0]*(n) for _ in range(n)]
answer2 = 0
for i in range(n):
for j in range(n):
if graph[i][j] == 'G':
graph[i][j] = 'R'
for i in range(n):
for j in range(n):
if visited[i][j] == 0:
answer2 += 1
dfs(i,j)
print(answer1, answer2)
'๐๏ธ Algorithm > ๐ฉ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 5014๋ฒ_์คํํธ๋งํฌ (0) | 2022.11.17 |
---|---|
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 7569๋ฒ_ํ ๋งํ (0) | 2022.11.17 |
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 4963๋ฒ_์ฌ์ ๊ฐ์ (0) | 2022.11.16 |
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 7562๋ฒ_๋์ดํธ์ ์ด๋ (0) | 2022.11.16 |
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 14502๋ฒ_์ฐ๊ตฌ์ (0) | 2022.11.16 |