문제출처: https://www.acmicpc.net/problem/2667
1. 문제 접근 방식
기존의 dfs방식대로 풀되 dfs 함수안에 global 변수를 선언해주고 graph[x][y] == 1일때마다 변수 값을 1씩 더해준다.
2. 내가 푼 코드
import sys
n = int(sys.stdin.readline())
graph = []
for i in range(n):
graph.append(list(map(int,sys.stdin.readline().strip())))
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
result = []
cnt = 0
total = 0
def dfs(x,y):
global cnt
if x<0 or x>=n or y<0 or y>=n:
return False
if graph[x][y] == 1:
cnt+=1
graph[x][y] = 0
for i in range(4):
dfs(x+dx[i],y+dy[i])
return True
for i in range(n):
for j in range(n):
if dfs(i,j)==True:
total+=1
result.append(cnt)
cnt = 0
print(total)
result.sort()
for i in result:
print(i)
3. 결과 및 느낀점
함수 안에서 사용된 지역변수를 함수 바깥에서 사용하려면 global이라는 전역 변수 키워드를 사용하자!
'[Boj문제풀이]' 카테고리의 다른 글
[Boj/백준] 2583 Python (0) | 2021.09.22 |
---|---|
[Boj/백준] 14716 Python (0) | 2021.09.21 |
[Boj/백준] 2644 Python (0) | 2021.09.20 |
[Boj/백준] 21773 Python (0) | 2021.09.18 |
[Boj/백준] 22252 Python (0) | 2021.09.17 |