Hikenny25

1992 - 쿼드트리 본문

baekjoon (solved.ac)/class 3 Solve

1992 - 쿼드트리

hikenny 2022. 10. 31. 17:07

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

 

1992번: 쿼드트리

첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또

www.acmicpc.net

 

- 분할정복법

 

import sys
input = sys.stdin.readline

def divide(arr):
    l = len(arr) // 2
    print('(', end='')
    for i in [0,l]:
        for j in [0,l]:
            quadtree([row[j:j+l] for row in arr[i:i+l]])
    print(')', end='')

def quadtree(matrix):
    l = len(matrix)
    value = [[matrix[0][0]] * l for _ in range(l)]

    if value == matrix:
        print(value[0][0], end='')
    else:
        divide(matrix)

n = int(input())
video = [list(map(int, input().rstrip())) for _ in range(n)]

quadtree(video)

 

쉬운 분할정복법 문제이다

 

1. 같은 수인지 확인

2-1. 같다면 그 수 출력

2-2. 다르면 분할

 

괄호 위치는 알잘딱깔센하게 넣어주면 됨

'baekjoon (solved.ac) > class 3 Solve' 카테고리의 다른 글

7576 - 토마토  (1) 2022.11.01
5525 - IOIOI  (2) 2022.10.31
1389 - 케빈 베이컨의 6단계 법칙  (0) 2022.10.31
1697 - 숨바꼭질  (0) 2022.10.31
2178 - 미로 탐색  (0) 2022.10.30
Comments