음료수 얼려 먹기

Seongkyun Yu·2020년 12월 21일
2

TIL - Algorithm

목록 보기
3/3
post-thumbnail

문제


접근 방법

모든 블럭을 체크하여 0인 경우 상하좌우 네 방향으로 재귀 함수를 돌려 1 값으로 만든다.

이렇게 처리한 후 결과 값을 하나씩 올린다.

단 없는 좌표일 경우와 이미 1인 경우 바로 리턴한다.

풀이 코드

input_data = list(map(int, input().split()))

row = input_data[0]
column = input_data[1]

graph = []
result = 0

for i in range(row):
  graph.append(list(map(int, input())))


def dfs(x, y):  
  if x < 0 or x > row - 1  or y < 0 or y > column - 1:
    return False

  if graph[x][y] == 1:
    return False
  
  graph[x][y] = 1

  dfs(x + 1, y)
  dfs(x - 1, y)
  dfs(x, y + 1)
  dfs(x, y - 1)
  
  return True


for i in range(row):
  for j in range(column):
    if dfs(i, j) == True:
      result += 1

print(result)
profile
FrontEnd Developer

0개의 댓글