alpyrithm_알파이리즘
[알고리즘][Python] 백준(BOJ) 1992 쿼드트리_파이썬 본문
1992 쿼드트리 www.acmicpc.net/problem/1992
1992번: 쿼드트리
첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1≤N ≤64의 범위를 가진다. 두 번째 줄부터는 길이 N 의 문자열이 N 개 들어온다. 각 문자열은 0 또는
www.acmicpc.net
문제 풀기 전 공부할 것 : 분할 정복
풀이
<내용>
- 영상이 모두 같은 점으로 되어 있는지 확인하는 check 함수를 정의한다.
- solve 함수를 통해 점 1개를 확인하는 경우 그 점을 결과에 추가한다.
- 점 1개가 아닌 경우 check 함수를 통해 같은 점으로 되어 있는지 확인한다.
- 같은 점이 아니라면 결과에 '('를 추가하고 영상을 나누는 작업을 진행한 후 ')'를 추가한다.
- 같은 점이라면 해당 점을 결과에 추가한다.
<코드>
import sys
input = sys.stdin.readline
n = int(input())
image = [list(map(int, input().rstrip())) for _ in range(n)]
res = ''
def check(i, j, d):
std = image[i][j]
for x in range(i, i+d):
for y in range(j, j+d):
if image[x][y] != std:
return -1
return std
def solve(i, j, k):
global res
if k == 1:
res += str(image[i][j])
return
chk = check(i, j, k)
if chk == -1:
res += '('
k //= 2
for p in range(2):
for q in range(2):
solve(i+p*k, j+q*k, k)
res += ')'
else:
res += str(chk)
return
solve(0, 0, n)
print(res)
비슷한 문제
2020/11/23 - [Algorithm/백준 알고리즘] - [알고리즘][Python] 백준(BOJ) 2630 색종이 만들기_파이썬
[알고리즘][Python] 백준(BOJ) 2630 색종이 만들기_파이썬
2630 색종이 만들기 www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸..
alpyrithm.tistory.com
728x90
반응형
'Algorithm > 백준 알고리즘_Python' 카테고리의 다른 글
[알고리즘][Python] 백준(BOJ) 5568 카드 놓기_파이썬 (0) | 2020.11.26 |
---|---|
[알고리즘][Python] 백준(BOJ) 12605 단어순서 뒤집기_파이썬 (0) | 2020.11.25 |
[알고리즘][Python] 백준(BOJ) 2630 색종이 만들기_파이썬 (0) | 2020.11.23 |
[알고리즘][Python] 백준(BOJ) 15903 카드 합체 놀이_파이썬 (0) | 2020.11.22 |
[알고리즘][Python] 백준(BOJ) 1269 대칭 차집합_파이썬 (0) | 2020.11.21 |
Comments