https://www.acmicpc.net/problem/10026
ํ์ด
๋ฌธ์ ๋ณด๊ณ ๋ ๊ฐ์ง ํด๊ฒฐ๋ฐฉ์์ด ๋ ์ฌ๋๋ค.
์ฒซ ๋ฒ์งธ๋ ์ฃผ์ด์ง ์
๋ ฅ์ผ๋ก ์ ๋ก์์ฝ์ด ์๋ ์ฌ๋์ด ๋ดค์ ๋ ๊ตฌ์ญ ์๋ฅผ ๋จผ์ ๊ตฌํ ๋ค์ ๊ทธ๋ฆฌ๋ ๋ด์ R ๋๋ G๋ฅผ ํ ๊ฐ์ง ์์ผ๋ก ํต์ผ์์ผ ์ ๋ก์์ฝ์ธ ์ฌ๋์ ๊ตฌ์ญ ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ
๋ ๋ฒ์งธ๋ BFS๋ก ๋๋ฆฌ๋ฉด์ ํ์ฌ ์์ด R ๋๋ G ์ผ ๋, ์ํ์ข์ฐ๋ R ๋๋ G ๋ฉด ํ์ ๋ฃ์ด ๊ตฌ์ญ ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ
์ด์จ๋ ๋ ๋ค ์ ์ด๋ ๊ทธ๋ํ ํ์์ ๋ ๋ฒ ํธ์ถํด์ผ ํด๊ฒฐํ ์ ์๋ค.
์ฝ๋
import sys, copy
from collections import deque
sys.setrecursionlimit(10000)
input = sys.stdin.readline
N = int(input())
grid = [list(input().rstrip()) for _ in range(N)]
visited = [[False]*N for _ in range(N)]
wasd = ((0, -1), (0, 1), (-1, 0), (1, 0))
def dfs(x, y, color):
visited[y][x] = True
for hx, hy in wasd:
hx += x
hy += y
if (hx >= 0 and hx < N) and (hy >= 0 and hy < N):
if not visited[hy][hx] and grid[hy][hx] == color:
dfs(hx, hy, color)
def bfs(blindess):
queue = deque()
copy_visited = copy.deepcopy(visited)
cnt = 0
for i in range(N):
for j in range(N):
if not copy_visited[i][j]:
queue.append([j, i])
copy_visited[i][j] = True
while queue:
xx, yy = queue.popleft()
for hx, hy in wasd:
hx += xx
hy += yy
if (hx >= 0 and hx < N) and (hy >= 0 and hy < N):
if blindess and (not copy_visited[hy][hx]):
if grid[yy][xx] == 'G' or grid[yy][xx] == 'R':
if grid[hy][hx] == 'G' or grid[hy][hx] == 'R':
queue.append([hx, hy])
copy_visited[hy][hx] = True
else:
if grid[hy][hx] == grid[yy][xx]:
queue.append([hx, hy])
copy_visited[hy][hx] = True
else:
if not copy_visited[hy][hx] and grid[hy][hx] == grid[yy][xx]:
queue.append([hx, hy])
copy_visited[hy][hx] = True
cnt += 1
return cnt
cnt = 0
for i in range(N):
for j in range(N):
if not visited[i][j]:
dfs(j, i, grid[i][j])
cnt += 1
for i in range(N):
for j in range(N):
if grid[i][j] == 'G':
grid[i][j] = 'R'
visited = [[False]*N for _ in range(N)]
blindcnt = 0
for i in range(N):
for j in range(N):
if not visited[i][j]:
dfs(j, i, grid[i][j])
blindcnt += 1
print(cnt, blindcnt)
# bfs ์ ๋ต
# print(bfs(False))
# print(bfs(True))
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3190 - ๋ฑ [์ฑ๊ณต(๋ฐ๋กํํธ)|02:14:43] (0) | 2024.08.09 |
---|---|
๋ฐฑ์ค 12094 - 2048 (Hard) [ํ์ด์ฌ] (0) | 2022.11.22 |
๋ฐฑ์ค 12100 - 2048 (Easy) [ํ์ด์ฌ] (1) | 2022.11.20 |
๋ฐฑ์ค 1541 - ์์ด๋ฒ๋ฆฐ ์ํธ [์๋ฐ] (0) | 2022.10.31 |
๋ฐฑ์ค 2206 | ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ [ํ์ด์ฌ] (0) | 2022.08.09 |