알고리즘

[백준 알고리즘] 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 재귀를 사용하므로 제한을 풀어줄 것

 

풀면서 에러 메시지도 없이 출력이 안뜨고 종료가 되었다.

아무리봐도 맞게 잘 짠 것 같은데 어디서 잘못했는지 찾을 수가 없었다.

알고보니 방문 후 체크할 때 '*'로 바꾸는 과정에서 윗줄을 복붙해 사용하면서 =으로 써야할 것을 ==으로 사용했다.

이럴수가.. 잘 확인하자