코딩하는 해맑은 거북이
[Python] 쿼드트리 - 백준 (분할정복) 본문
해당 글은 백준 1992번 '쿼드트리' 문제를 다룬다.
문제
https://www.acmicpc.net/problem/1992
1992번: 쿼드트리
첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또
www.acmicpc.net
설명
처음에는 nxn 행렬을 모두 탐색하다가, (0, 0)의 값과 다르다면 4개로 나누어서 재탐색하는 분할정복 알고리즘으로 해결하였다. 주의할 점은 if문에 return으로 4분할로 재귀 후 종료할 수 있도록 해야한다.
코드
n = int(input())
arr = [list(map(int, input())) for _ in range(n)]
def check(x, y, n):
for i in range(x, x+n):
for j in range(y, y+n):
if arr[x][y] != arr[i][j]:
print('(', end='')
n //= 2
check(x, y, n)
check(x, y + n, n)
check(x + n, y, n)
check(x + n, y + n, n)
print(')', end='')
return
if arr[x][y] == 1:
print(1, end='')
else:
print(0, end='')
check(0, 0, n)
'코딩테스트' 카테고리의 다른 글
[Python] 쉬운 계단 수 - 백준 (DP) (0) | 2023.12.13 |
---|---|
[Python] 종이의 개수 - 백준 (분할정복) (0) | 2023.12.10 |
[Python] 프린터 큐 - 백준 (0) | 2023.11.29 |
[Python] N과 M (4) - 백준 (DFS) (0) | 2023.11.28 |
[Python] 폴리오미노 - 백준 (0) | 2023.11.23 |
Comments