공부/전반적인 프로그래밍

백준 1388 파이썬

김빼로 2022. 7. 24. 10:29

이코테 dfs/bfs 공부하면서 책에 나온 문제들은 어려워서 백준에 난이도 낮은 문제를 풀어봤다.

처음에 (y== m-1 or graph[x][y+1] == '-') 이 부분을 (graph[x][y+1] == '-' or y== m-1)로 썼는데 indexerror가 계속 떴다. 에러 부분을 읽어봐도 원인을 못찾다가 혹시나 하는 마음에 바꿔보았더니 잘되었다.

or 의 순서도 신경써야한다는 걸 배웠다.

n,m = map(int, input().split())
graph = []
for _ in range(n):
  graph.append(list(input()))

visited = []
for _ in range(n):
  visited.append([False]*m)

def dfs(x,y):
  if x <=-1 or x>=n or y<=-1 or y>=m:
    return False



  if visited[x][y] == False:
    visited[x][y] = True
    if graph[x][y] == '-' and (y== m-1 or graph[x][y+1] == '-'):
      dfs(x,y+1)
    elif graph[x][y] =='|' and (x == n-1 or graph[x+1][y] == '|'):
      dfs(x+1,y)
    return True

  return False

result = 0
for i in range(n):
  for j in range(m):
    if dfs(i,j) == True:
      result +=1

print(result)