백준 1992 쿼드트리

김민영·2023년 1월 17일
0

알고리즘

목록 보기
76/125

과정

  • 색종이 만들기와 비슷한 재귀 문제
  • 색이 같으면 출력, 다르면 4등분하기
  • 괄호와 같이 출력해야하므로 출력 형식에 주의하기.
import sys
input = sys.stdin.readline
N = int(input())

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


def quad(x, y, N):
    isSame = True # 플래그
    color = graph[y][x]

    # 전부 같은 색인지 확인
    for i in range(N):
        for j in range(N):
            if graph[y+j][x+i] != color:
                isSame = False
                break
        if not isSame:
            break

    # 같은 색이면 출력
    if isSame:
        print(color, end="")
    # 그 외는 재귀
    else:
        print("(", end="")
        quad(x, y, N//2)
        quad(x + N//2, y, N//2)
        quad(x, y + N//2, N//2)
        quad(x + N//2, y + N//2, N//2)
        print(")", end="")


quad(0, 0, N)

https://tmdrl5779.tistory.com/102
참고해서 풀었습니다.

profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글