문제출처: https://www.acmicpc.net/problem/2667
2667번: 단지번호붙이기
<그림 1>과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여
www.acmicpc.net
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 |