백준1992(파이썬) - 쿼드트리
resilient
·2021. 6. 4. 14:17
728x90
반응형
https://www.acmicpc.net/problem/1992
- 이 문제는 1780번 종이의 개수와 거의 유사한 문제였다. 1780은 3^N 의 변의 길이라면 이 문제는 2^N의 변의 길이로 4개씩 쪼개주는 형태였다.
- 자세한 설명은 주석에 포함시켜두었다.
import sys
input = sys.stdin.readline
n = int(input())
graph =[list(input()) for _ in range(n)]
result = []
def function(x,y,length):
#한 압축영상의 시작 값을 start로 둔다.
start = graph[x][y]
for i in range(x,x+length):
for j in range(y,y+length):
#start (쪼개진 첫번째 값) 과 다르면
if start != graph[i][j]:
#쪼개짐이 시작되는 경우에 ( 를 넣어주고
result.append("(")
# 4개로 쪼개준다.
for a in range(2):
for b in range(2):
function(x+length//2*a,y+length//2*b,length//2)
#다 처리해준뒤에는 ) 로 닫아준다
result.append(")")
#처리해주고 리턴
return
print(x,y)
#여기서부터는 쪼개질대로 쪼개지고, start값과 같은 것만
#start 가 0이면 0넣어주고
if start == '0':
result.append(0)
#start가 1이면 1넣어준다.
elif start == '1':
result.append(1)
function(0,0,n)
for i in result:
print(i,end="")
반응형
'자료구조 & 알고리즘 > 백준(Baekjoon)' 카테고리의 다른 글
백준6603(파이썬) - 로또 (0) | 2021.06.06 |
---|---|
백준5525(파이썬) - IOIOI (0) | 2021.06.05 |
백준1389(파이썬) - 케빈 베이컨의 6단계 법칙 (0) | 2021.06.03 |
백준1780(파이썬) - 종이의 개수 (0) | 2021.06.01 |
백준3079(파이썬) - 입국심사 (0) | 2021.05.29 |