[๋ฐฑ์ค-10026] ์ ๋ก์์ฝ / Python
๐ Problem Solving/Baekjoon
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs(x, y, c, colorList):
queue = deque()
queue.append((x, y))
colorList[x][y] = 0
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 colorList[nx][ny] != 0:
if colorList[nx][ny] == c:
queue.append((nx, ny))
colorList[nx][ny] = 0
graph = [list(map(str, input().rstrip())) for _ in range(n)]
copy = [[0] * n for _ in range(n)]
for i in range(n):
for j in range(n):
if graph[i][j] == "R" or graph[i][j] == "G":
copy[i][j] = 1
else:
copy[i][j] = 2
answer1 = 0
answer2 = 0
for i in range(n):
for j in range(n):
if graph[i][j] != 0:
bfs(i, j, graph[i][j], graph)
answer1 += 1
if copy[i][j] != 0:
bfs(i, j, copy[i][j], copy)
answer2 += 1
print(answer1, answer2)
ํด์ค
์ ๋ก์์ฝ์ธ ์ฌ๋์ ๋ฆฌ์คํธ๋ฅผ ํ๋ ๋ ๋ง๋ค์ด์ฃผ๊ณ , R๊ณผ G๋ฅผ ๊ฐ์ ๊ฐ์ผ๋ก ์นํํด์ค๋ค.
์ ๋ก์์์ธ ์ฌ๋, ์ ๋ก์์ฝ์ด ์๋ ์ฌ๋์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ๊ฐ bfs๋ฅผ ์งํํ๋ฉด ๋!
'๐ Problem Solving > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค-16236] ์๊ธฐ ์์ด / Python (0) | 2021.05.31 |
---|---|
[๋ฐฑ์ค-14500] ํ ํธ๋ก๋ฏธ๋ ธ / Python (0) | 2021.05.31 |
[๋ฐฑ์ค-11727] 2xn ํ์ผ๋ง 2 / Python (0) | 2021.05.30 |
[๋ฐฑ์ค-11726] 2xn ํ์ผ๋ง / Python (0) | 2021.05.30 |
[๋ฐฑ์ค-9019] DSLR / Python (0) | 2021.05.29 |