[백준 알고리즘] 1992번: 쿼드트리 (Python / 파이썬)

2024. 2. 19. 04:40·알고리즘/백준
문제 접근

재귀 문제이다.

0 ->

(0000)

-> (0(0011)00)…

함수가 호출되고, 매트릭스가 모두 같은 요소로 채워져 있지 않다면 해당 문자를 (xxxx)형태로 변경하고 각 x마다  재귀호출을 한다.

 

정답 코드
#1992번: 쿼드트리

import sys

def quad_tree(matrix):
    size = len(matrix)
    start_point = matrix[0][0]
    flag = 0
    for i in range(size):
        for j in range(size):
            if matrix[i][j] != start_point:
                flag = 1
                break
    if flag == 1:
        new_matrices = []
        new_size = size // 2
        for k in range(2):  # k = 0,1
            row_start = k * new_size
            row_end = row_start + new_size
            for l in range(2):  # l = 0,1
                column_start = l * new_size
                column_end = column_start + new_size
                new_matrix = [row[column_start:column_end] for row in matrix[row_start:row_end]]
                new_matrices.append(new_matrix)
        return '(' + quad_tree(new_matrices[0]) + quad_tree(new_matrices[1]) + quad_tree(new_matrices[2]) + quad_tree(new_matrices[3]) + ')'
    return start_point


n = int(sys.stdin.readline())
matrix = []
for _ in range(n):
    matrix.append(list(sys.stdin.readline().rstrip()))


print(quad_tree(matrix))

 

1992번: 쿼드트리

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

www.acmicpc.net

 

저작자표시 (새창열림)

'알고리즘 > 백준' 카테고리의 다른 글

[백준 알고리즘] 9095번: 1, 2, 3 더하기 (Python / 파이썬)  (0) 2024.02.28
[백준 알고리즘] 1463번: 1로 만들기 (Python / 파이썬)  (0) 2024.02.28
[백준 알고리즘] 1926번: 그림 (Python / 파이썬)  (1) 2024.02.19
[백준 알고리즘] 16987번: 계란으로 계란치기 (Python / 파이썬)  (1) 2024.01.28
[백준 알고리즘] N과 M (12) (Python / 파이썬)  (0) 2024.01.28
'알고리즘/백준' 카테고리의 다른 글
  • [백준 알고리즘] 9095번: 1, 2, 3 더하기 (Python / 파이썬)
  • [백준 알고리즘] 1463번: 1로 만들기 (Python / 파이썬)
  • [백준 알고리즘] 1926번: 그림 (Python / 파이썬)
  • [백준 알고리즘] 16987번: 계란으로 계란치기 (Python / 파이썬)
gyujh
gyujh
개발 공부 블로그
  • gyujh
    규
    gyujh
  • 전체
    오늘
    어제
    • 분류 전체보기 (86)
      • Backend&DB (3)
      • CS (5)
        • 컴퓨터구조 (1)
        • 소프트웨어공학 (4)
      • JavaScript (2)
      • Git (2)
      • 알고리즘 (73)
        • 개념 (3)
        • 백준 (70)
      • Projects (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    딕셔너리
    답안
    런타임
    정렬
    프로그래머스
    풀이
    백준
    정답
    BOJ
    스택
    에러
    문자열
    알고리즘
    구현
    숏코딩
    재귀
    algorithm
    시간초과
    답
    너비우선탐색
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
gyujh
[백준 알고리즘] 1992번: 쿼드트리 (Python / 파이썬)
상단으로

티스토리툴바