바닥 장식 – 실버 4
2023. 1. 2. 17:04ㆍ코딩 테스트 준비
728x90
반응형
dfs 접근 방법
1. 어떤 요소에 접근하고 접근 후 값 변경하고 다음 접근 방식 선택
2. 반복 문을 사용하여 변경되지 않은 값 인식 해당 값부터 다시 조회. (해당 조회가 행 혹은 열의 길이를 초과했는지 항상 확인할 것)
* 반복 문 사용 이유 중 하나는 해당 조회를 함수에서 종료 시키는 것이 아닌 각 인자를 모두 조회하면 끝나게 하기 위함도 있다.
n, m = map(int, input().split())
room = [list(input())for _ in range(n)]
ans = 0
def dfs(i, j):
if room[i][j] == '-':
room[i][j] = 0
# 0은 방문 처리한 것을 말하고 이후 조건문에서 해당 값은 무시된다. 즉 - 혹은 | 값을 인지하여 연속되는 값이 끝난 경우에 ans에 +를 하고 다시 조회하기를 반복하여 전체 값을 깉이 우선으로 탐색하는 것이다.
if j < m - 1 and room[i][j+1] == '-':
dfs(i, j + 1)
elif room[i][j] == '|':
room[i][j] = 0
if i < n - 1 and room[i+1][j] == '|':
dfs(i + 1, j)
for i in range(n):
for j in range(m):
if room[i][j]:
# if 값은 0을 제외한 모든 값이 일단 true이다. 그렇기에 제일 처음은 무조건 +1이 된 체 room을 순회하게 된다.
ans += 1
dfs(i, j)
print(ans)
728x90
반응형
'코딩 테스트 준비' 카테고리의 다른 글
The Game of Death – 실버 4 (0) | 2023.01.02 |
---|---|
Bucket Brigade – 실버 4 (0) | 2023.01.02 |
Flight Turbulence – 실버 5 (0) | 2023.01.02 |
구명보트 -level2 (0) | 2023.01.01 |
큰 수 만들기 -level2 (0) | 2023.01.01 |