https://www.acmicpc.net/problem/10026
10026๋ฒ: ์ ๋ก์์ฝ
์ ๋ก์์ฝ์ ๋นจ๊ฐ์๊ณผ ์ด๋ก์์ ์ฐจ์ด๋ฅผ ๊ฑฐ์ ๋๋ผ์ง ๋ชปํ๋ค. ๋ฐ๋ผ์, ์ ๋ก์์ฝ์ธ ์ฌ๋์ด ๋ณด๋ ๊ทธ๋ฆผ์ ์๋ ์ฌ๋์ด ๋ณด๋ ๊ทธ๋ฆผ๊ณผ๋ ์ข ๋ค๋ฅผ ์ ์๋ค. ํฌ๊ธฐ๊ฐ N×N์ธ ๊ทธ๋ฆฌ๋์ ๊ฐ ์นธ์ R(๋นจ๊ฐ), G(์ด๋ก)
www.acmicpc.net
1. ์ผ๋ฐ์ธ ๊ธฐ์ค์ผ๋ก bfs์ซ ๋๋ ค์ ๊ตฌ์ญ์ด ๋ช ๊ฐ์ธ์ง ๊ณ์ฐํ์ฌ ์ถ๋ ฅํ๋ค.
2. ์ ๋ก์์ฝ ๊ธฐ์ค์ผ๋ก bfs๋ฅผ ๋ค์ ํ ๋ฒ ๋๋ฆฌ๊ธฐ ์ํด ๊ทธ๋ํ๋ฅผ ์ด์ง ๋ณ๊ฒฝํด์คฌ๋ค.
-๊ทธ๋ํ ๋ชจ๋ ์์๋ค์ ๋น๋ฐฉ๋ฌธ์ฒ๋ฆฌ
-๋ชจ๋ G๋ฅผ R๋ก ๋ฐ๊ฟ์คฌ๋ค (์ ๋ก์์ฝ์ G์ R์ ๊ตฌ๋ณ ๋ชปํ๋ ํ๋๋ก ํต์ผ์ํด)
3. ์ ๋ก์์ฝ ๊ธฐ์ค์ผ๋ก bfs ํ ๋ฒ ๋ ๋๋ ค์ ๊ฒฐ๊ณผ ์ถ๋ ฅ
BFS๋ก ์ฐ๊ฒฐ์์ ๊ฐ์ ๊ตฌํ ๋ฐฉ์
-์ต์ด๋ฐฉ๋ฌธ์์ bfs๋ก ์ธ์ ํ ์นธ๋ค์ ๋ชจ๋ ๋ฐฉ๋ฌธํ๊ณ True๋ฅผ ๋ฆฌํด
-๋ฐฉ๋ฌธ์ฒ๋ฆฌ๊ฐ ์ด๋ฏธ ๋ ์นธ์ด๋ฉด False๋ฅผ ๋ฆฌํด
-bfs๋ฆฌํด๊ฐ์ด true์ผ ๋์๋ง count๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
๋ฐฉ๋ฌธ์ฒ๋ฆฌ ๋ฐฉ์
-๊ทธ๋ํ ๊ฐ์ด ๋๋ฌธ์๋ผ๋ฉด ๋ฐฉ๋ฌธํ์ ์๋ ์นธ์ด๋ค. ์๋ฌธ์๋ก ๋ฐ๊ฟ์ค์ผ๋ก์จ ๋ฐฉ๋ฌธ์ฒ๋ฆฌํจ
-๊ทธ๋ํ ๊ฐ์ด ์๋ฌธ์๋ผ๋ฉด ๋ฐฉ๋ฌธํ ์ ์๋ ์นธ์ด๋ค.
from collections import deque
dx=[-1,1,0,0]
dy=[0,0,-1,1]
def bfs(x,y):
if graph[x][y].islower(): #๋ฐฉ๋ฌธํ์ ์์ผ๋ฉด
return False
graph[x][y] = graph[x][y].lower() #๋ฐฉ๋ฌธ์ฒ๋ฆฌ
q = deque()
q.append((x,y))
while q:
a,b = q.popleft()
for i in range(4):
nx = a + dx[i]
ny = b + dy[i]
#๋ฒ์๋ด์ ์ํ๊ณ ๋ฐฉ๋ฌธํ ์ ์๊ณ ๋ฐฉ๋ฌธํ ์ ์๋ ์นธ์ผ๊ฒฝ์ฐ
if 0<=nx<n and 0<=ny<n and graph[nx][ny]==graph[a][b].upper() and graph[nx][ny].isupper():
graph[nx][ny] = graph[nx][ny].lower() #๋ฐฉ๋ฌธ์ฒ๋ฆฌ
q.append((nx,ny))
return True
#์
๋ ฅ๋ฐ๊ธฐ
n = int(input())
graph=[]
for i in range(n):
arr = []
temp=input()
for j in range(n):
arr.append(temp[j])
graph.append(arr)
#์ผ๋ฐ์ธ ๊ฒฐ๊ณผ ์ถ๋ ฅ
cnt1 = 0
for i in range(n):
for j in range(n):
if bfs1(i,j)==True:
cnt1 += 1
print(cnt1,end=' ')
#๊ทธ๋ํ ๋น๋ฐฉ๋ฌธ์ฒ๋ฆฌ & Red์ Green์ ๊ฐ์๋ฌธ์๋ก ํต์ผ
for i in range(n):
for j in range(n):
graph[i][j] = graph[i][j].upper()
if graph[i][j] == 'G':
graph[i][j] = 'R'
#์ ๋ก์์ฝ ๊ฒฐ๊ณผ ์ถ๋ ฅ
cnt2 = 0
for i in range(n):
for j in range(n):
if bfs(i,j)==True:
cnt2 += 1
print(cnt2)
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > DFS,BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]7576๋ฒ: ํ ๋งํ (0) | 2023.02.25 |
---|---|
[๋ฐฑ์ค]2468๋ฒ: ์์ ์์ญ (0) | 2023.02.25 |
[๋ฐฑ์ค]4963๋ฒ: ์ฌ์ ๊ฐ์ (0) | 2023.02.23 |
[์ด์ฝํ ]๋ฏธ๋ก ํ์ถ / [๋ฐฑ์ค]2178๋ฒ: ๋ฏธ๋ก ํ์ (0) | 2023.02.23 |
[์ด์ฝํ ] ์๋ฃ์ ์ผ๋ ค ๋จน๊ธฐ (1) | 2023.02.23 |