문제
https://www.acmicpc.net/problem/1992
풀이
import sys
n = int(input())
arr = [list(map(int,list(sys.stdin.readline().strip()))) for _ in range(n)]
def tree(x,y,n):
check = arr[x][y] # 체크할 기준 설정
for i in range(x,x+n):
for j in range(y,y+n):
if check != arr[i][j]: # 다른게 있으면
check = -1 # 다르다고 체크
break
if check == -1: # 다르면 쪼개기
print("(",end="")
n//=2
tree(x,y,n) # 왼쪽 위
tree(x,y+n,n) # 오른쪽 위
tree(x+n,y,n) # 왼쪽 아래
tree(x+n,y+n,n) # 오른쪽 아래
print(")",end="")
elif check == 0:
print("0",end="")
else:
print("1",end="")
tree(0,0,n)
체크할 기준을 설정해주고 범위 내에 다른게 있으면 쪼개준다.
'코딩테스트 > Python' 카테고리의 다른 글
[Python] 백준 #4659 - 비밀번호 발음하기 (0) | 2022.05.23 |
---|---|
[Python] 백준 #2828 - 사과 담기 게임 (0) | 2022.05.23 |
[Python] 백준 #2529 - 부등호 (2) | 2022.05.16 |
[Python] 백준 #14620 - 꽃길 (0) | 2022.05.16 |
[Python] 백준 #2910 - 빈도 정렬 (0) | 2022.05.16 |