본문 바로가기
Problem Solving/BOJ

[BOJ][Python]1388번 풀이

by NoiB 2022. 5. 24.
반응형

https://www.acmicpc.net/problem/1388

 

1388번: 바닥 장식

형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나

www.acmicpc.net

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