ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๐ฉ ๊ทธ๋ํ, BFS
thinking
ํ๋ฅผ ๋ง๋ ๋ค์, ์ฌ๋ฐฉ ํ์ํ๋ฉด์ ์์ง ๋ฐฉ๋ฌธ ์ํ๊ณ (==์๊น ํ์ธ ์ํ๊ณ ) ๊ฐ์ ์์ธ ๊ฒฝ์ฐ ๋ฐฉ๋ฌธ์ฒดํฌ ํ ํ์ ๋ฃ์๋ค.
์ ๋ก์์ฝ์ธ ๊ฒฝ์ฐ๋ R๊ณผ G๊ฐ ๊ฐ์ผ๋ฏ๋ก ํ๋์ ์ปฌ๋ฌ๋ก ํต์ผ ์ํจ๋ค์ BFS๊ณผ์ ์ ๋๊ฐ์ด ๋ฐ๋ณตํ๋ค.
N์ด 100๊น์ง๋ผ ์ด์ค for๋ฌธ ์ฌ๋ฌ๋ฒ ๋๋ ค๋ ์์*N*N= c*10000 ๋ฐ์ ์๋์ ์๊ฐ์ด๊ณผ ๋ ธ๊ฑฑ์
์ฝ๋
from collections import deque
def BFS(x,y):
q.append((x,y))
dx = [-1,0,1,0]
dy = [0,1,0,-1]
visited[x][y] = 1
while q:
x, y = q.popleft()
for d in range(4):
nx = x + dx[d]
ny = y + dy[d]
# ์ธ๋ฑ์ค ๋ฒ์ ์์ ์์ผ๋ฉด์, ๊ฐ์ ์์ด๋ฉด์, ๋ฐฉ๋ฌธ ์ํ ๊ฒฝ์ฐ
if 0<=nx<N and 0<=ny<N and a[nx][ny] == a[x][y] and not visited[nx][ny]:
visited[nx][ny] = 1 # ๋ฐฉ๋ฌธ์ฒดํฌ ํ ํ์ ๋ฃ์
q.append((nx,ny))
N = int(input())
a = [list(input()) for _ in range(N)]
q = deque()
# ์ ๋ก์์ฝ ์๋ ๊ฒฝ์ฐ
visited = [[0] * N for _ in range(N)]
cnt1 = 0
for i in range(N):
for j in range(N):
if not visited[i][j]: # ์์ง ๋ฐฉ๋ฌธ ์ํ ๊ฒฝ์ฐ๋ง ์ฒดํน
BFS(i,j)
cnt1 += 1
# ์ ๋ก์์ฝ์ธ ๊ฒฝ์ฐ
for i in range(N):
for j in range(N):
if a[i][j] == 'G':
a[i][j] = 'R'
visited = [[0] * N for _ in range(N)]
cnt2 = 0
for i in range(N):
for j in range(N):
if not visited[i][j]:
BFS(i,j)
cnt2 += 1
print(cnt1, cnt2)
'algorithm > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2003. ์๋ค์ ํฉ 2 / python ํ์ด์ฌ / ํฌํฌ์ธํฐ, ๊ตฌ๊ฐํฉ (0) | 2021.06.30 |
---|---|
[๋ฐฑ์ค] 1927. ์ต์ํ / 11279. ์ต๋ํ / python ํ์ด์ฌ (0) | 2021.06.06 |
[๋ฐฑ์ค] 1107. ๋ฆฌ๋ชจ์ปจ / python ํ์ด์ฌ (0) | 2021.06.03 |
[๋ฐฑ์ค] 7576. ํ ๋งํ / python ํ์ด์ฌ (0) | 2021.06.02 |
[๋ฐฑ์ค] 14889. ์คํํธ์ ๋งํฌ / python ํ์ด์ฌ (0) | 2021.06.02 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
TAG
- ๊ธฐ์ง๊ตญ์ค์น
- merge ์๋ฌ
- ๋ธ๋ฃจํธํฌ์ค
- ์ผ์ฑ์ฝํ
- 2018 ์นด์นด์ค ๊ณต์ฑ
- ์์ด๋๋ง์๊ธฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- Python
- dp
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- ๋ฐฑ์ค
- swea
- ํ์ด์ฌ
- git ๋ฏธ๋ฌ๋ง
- 21609 ์์ด ์คํ๊ต
- ๋ณด์์ผํ
- BFS
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- merge์๋ฌ
- react
- dfs
- ์ผ์ฑ๊ธฐ์ถ
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- ์๊ณ ๋ฆฌ์ฆ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
- Total
- Today
- Yesterday
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ