[백준]1780_종이의 개수
2024. 9. 7. 13:52ㆍ알고리즘 풀이

9개로 나누는 과정

코드
def dfs(row, col, jump):
cur_paper = paper[row][col]
for r in range(row, row + jump):
for c in range(col, col + jump):
if cur_paper != paper[r][c]: # 다음 종이랑 시작 종이가 다르면.
# 9등분 해줘야한다.
j = jump // 3
# 각각 범위를 정해서 호출한다.
dfs(row, col, j) # 1~3번째 줄 1~3 까지
dfs(row, col + j, j) # 1~3번째 줄 4~6 까지
dfs(row, col + j * 2, j) # 1~3번째 줄 7~9 까지
dfs(row + j, col, j) # 4~6번째 줄 1~3 까지
dfs(row + j, col + j, j) # 4~6번째 줄 4~6 까지
dfs(row + j, col + j * 2, j) # 4~6번째 줄 7~9 까지
dfs(row + j * 2, col, j) # 7~9번째 줄 1~3 까지
dfs(row + j * 2, col + j, j) # 7~9번째 줄 4~6 까지
dfs(row + j * 2, col + j * 2, j) # 7~9번째 줄 7~9 까지
return
# 위 과정을 통과후 한 가지 종이로만 된 경우
ans[cur_paper] += 1
return
ans = {-1: 0, 0: 0, 1: 0}
n = int(input())
paper = [list(map(int, input().split())) for _ in range(n)]
dfs(0, 0, n)
for a in ans.values():
print(a)'알고리즘 풀이' 카테고리의 다른 글
| [소프티어]지도 자동 구축 (0) | 2024.09.07 |
|---|---|
| [소프티어] 장애물 인식 프로그 (1) | 2024.09.07 |
| [백준]수들의 합2 (2) | 2024.09.07 |
| [백준]17135_캐슬디펜스 (0) | 2024.08.26 |
| [백준]4344_평균은넘겠지 (1) | 2024.08.24 |