코드
n = int(input())
graph = []
for i in range(n) :
graph.append(list(map(int, input())))
answer = []
def dfs(x, y) :
global apt
if x <= -1 or x >= n or y <= -1 or y >= n :
return False
if graph[x][y] == 1 :
graph[x][y] = 0
apt += 1
dfs(x-1, y)
dfs(x+1, y)
dfs(x, y+1)
dfs(x, y-1)
return apt
else :
return False
danji = 0
apt = 0
for i in range(n) :
for j in range(n) :
if dfs(i, j) >= 1 :
answer.append(apt)
danji += 1
apt = 0
answer = sorted(answer)
print(danji)
a = len(answer)
b = 0
while b < a :
print(answer[b])
b += 1
C
복사
해설
문제는 0으로 둘러싸인 1의 개수 (= 아파트수) 구하고, 그런 단지가 몇 개인지 구하는 것.
dfs 수행하면서 apt 계속 더해나갔고, 상하좌우 다 수행한 후 apt를 return
return한 apt를 answer list에 저장해두고 다음 좌표에서 dfs 진행
질문: apt 변수 그냥 두니까 UnboundLocalError: local variable 'apt' referenced before assignment 이런 에러 뜨길래 global로 뒀는데.. 왜 에러인지 잘 모르겠음
엥 근데 bfs로 풀어야하나욤?ㅎㅎ dfs로 푼 것 같은뎅.. . . 하하