-문제: https://www.acmicpc.net/problem/10026
쉬운 문제인데 적록색약 입장에서 갯수세는데 필요한 아이디어가 생각이 안났다.
bfs로 진행하고, i,j 위치에있는 문자값과 같은 것을 기준으로 진행하면 된다고 생각했지만
'R'을 'G'로 바꾸어서 적록색약 진행하는 거랑 map(str~)이 부분을 잘 하지 못했다
for _ in range(n):
s.append(list(map(str,input())))
for i in range(n):
for j in range(n):
if s[i][j]=='G':
s[i][j]='R'
-정답풀이:
from collections import deque
n=int(input())
s=[]
for _ in range(n):
s.append(list(map(str,input())))
dx=[-1,1,0,0]
dy=[0,0,-1,1]
visit=[[0]*(n+1) for _ in range(n+1)]
def bfs(x,y):
queue=deque()
queue.append([x,y])
word=s[x][y]
while queue:
x,y=queue.popleft()
for i in range(4):
nx,ny=x+dx[i],y+dy[i]
if 0<=nx<n and 0<=ny<n and s[nx][ny]==word and visit[nx][ny]==0:
queue.append([nx,ny])
visit[nx][ny]=1
ans=0
for i in range(n):
for j in range(n):
if not visit[i][j]:
bfs(i,j)
ans+=1
print(ans,end=' ')
for i in range(n):
for j in range(n):
if s[i][j]=='G':
s[i][j]='R'
visit=[[0]*(n+1) for _ in range(n+1)]
ans=0
for i in range(n):
for j in range(n):
if not visit[i][j]:
bfs(i,j)
ans+=1
print(ans)
'백준 > Search' 카테고리의 다른 글
[백준/bfs] 11725번: 트리의 부모 찾기 (0) | 2022.02.20 |
---|---|
[백준/bfs] 2583: 영역 구하기 (0) | 2022.02.20 |
[백준/bfs] 7569번: 토마토 (0) | 2022.02.17 |
[백준/bfs,dfs] 4963번: 섬의 개수(발전한 부분) (0) | 2022.02.17 |
[백준/bfs] 14502번: 연구실(다시->해결) (0) | 2022.02.16 |