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 quad_tree():
n = int(input().strip())
graph = [list(input().strip()) for _ in range(n)]
answer = ""
def quad(x,y,n):
st = graph[x][y]
nonlocal answer
for i in range(x,x+n):
for j in range(y,y+n):
if graph[i][j] != st:
half = n//2
answer += "("
quad(x,y,half)
quad(x ,y+half,half)
quad(x+half,y,half)
quad(x+half,y+half,half)
answer += ")"
return
answer += str(graph[x][y])
quad(0,0,n)
return answer
print(quad_tree())
4등분으로 나누어 질때 "(" 추가하고 끝나고 나서는 ")"를 추가한다는 생각을 아이디어로 나누어가면서 확인을 했다.
numpy를 사용해서 2차원리스트를 슬라이싱해서 all하는 방법도 있을거 같다.
'백준 문제 풀이 및 피드백' 카테고리의 다른 글
2023.01.15 미로탐색 백준 (0) | 2023.01.15 |
---|---|
2023.01.15 영역구하기 백준 (0) | 2023.01.15 |
2023.01.15 단지번호붙이기 백준 (0) | 2023.01.15 |
2023.01.14 백준 바이러스 (0) | 2023.01.14 |
2022.12.28 백준 랜선 자르기 (0) | 2022.12.28 |