반응형
https://www.acmicpc.net/problem/1388
def dfs(r,c):
global cnt
if visited[r][c] == True:
return
visited[r][c] = True
if b[r][c] == '-':
if c+1<m and b[r][c+1] == '-':
dfs(r,c+1)
else:
cnt += 1
else:
if r+1<n and b[r+1][c] == '|':
dfs(r+1,c)
else:
cnt += 1
n,m = map(int, input().split())
b = [input() for _ in range(n)]
visited = [[False for _ in range(m)] for _ in range(n)]
cnt = 0
for i in range(n):
for j in range(m):
dfs(i,j)
print(cnt)
이번에는 dfs 문제입니다. 사실은 bfs 연습을 하려고 시작했는데 운동 갔다와서 까먹는 바람에 dfs로 풀어버렸네요. 저는 해당 문제를 풀 때 다음 번에 탐색해야하는 타일 모양이 현재와 다를 경우 함수를 호출하지 않고 카운트를 하나 올리는 방식으로 해결했습니다. 또한 타일 별로 탐색을 이미 했다는 체크를 해두어야 이미 한 개로 세어놓은 타일을 다시 탐색하지 않기 때문에 방문 처리를 위한 배열도 따로 만들어줬구요. 저는 카운팅을 어떻게 하면 좋을지 고민 하는데서 시간을 많이 썼던 것 같아요.
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ][Python]17198번 풀이 (0) | 2022.05.25 |
---|---|
[BOJ][Python]24416번 풀이 (0) | 2022.05.25 |
[BOJ][Python]15312번 풀이 (0) | 2022.05.24 |
[BOJ][Python]16173번 풀이 (0) | 2022.05.23 |