알고리즘
[백준 알고리즘] 1388번 바닥 장식. 파이썬(python)
삶은겨란
2022. 4. 30. 17:25
import sys
sys.setrecursionlimit(10**6)
d=[-1,1]
def dfs(x,y):
# '|'일때 열을 이동하면서 같으면 dfs탐색을 반복한다.
if graph[x][y]=='|':
graph[x][y]='*'
for i in d:
dx=x+i
if dx>0 and dx<n and graph[dx][y]=='|':
dfs(dx,y)
# '-'일때 행을 이동하면서 같으면 dfs탐색을 반복한다.
if graph[x][y]=='-':
graph[x][y]='*'
for i in d:
dy=y+i
if dy>0 and dy<m and graph[x][dy]=='-':
dfs(x,dy)
# 입력
n, m = map(int, input().split())
graph=[]
for _ in range(n):
graph.append(list(input()))
cnt=0
for i in range(n):
for j in range(m):
if graph[i][j]=='-' or graph[i][j]=='|':
dfs(i,j)
cnt+=1
print(cnt)
주의할 점
dfs 재귀를 사용하므로 제한을 풀어줄 것
풀면서 에러 메시지도 없이 출력이 안뜨고 종료가 되었다.
아무리봐도 맞게 잘 짠 것 같은데 어디서 잘못했는지 찾을 수가 없었다.
알고보니 방문 후 체크할 때 '*'로 바꾸는 과정에서 윗줄을 복붙해 사용하면서 =으로 써야할 것을 ==으로 사용했다.
이럴수가.. 잘 확인하자