/ 제출 1 /
import sys
input = sys.stdin.readline
n = int(input())
board = [list(input()) for _ in range(n)]
def quadtree(startX,startY, endX, endY):
print('(')
compress = board[0][0]
canCompress = True
input()
for i in range(startX, endX):
for j in range(startY, endY):
print(board[i][j], end="")
if compress != board[i][j]:
canCompress = False
print("")
if endX - startX <= 1:
return compress
else:
print(quadtree(0, 0, endX//2, endY//2))
print(quadtree(0, startY//2, endX//2, endY))
print(quadtree(startX//2, 0, endX, endY//2))
print(quadtree(startX//2, startY//2, endX, endY))
print(')')
quadtree(0, 0, n, n)
: 무한루프 돌면서 터집니다.
1. 함수 정의
def quadtree(startX,startY, endX, endY):
2. base condition
if endX - startX <= 1:
return compress
: 사실
n = 2일 때,
압축 가능?(4개가 다 같음?) 맞으면, 그 숫자 리턴
아니면, 그 배열 리턴
으로 구현하고 싶었는데, 잘 안 됐다.
3. 재귀 식
print(quadtree(0, 0, endX//2, endY//2))
print(quadtree(0, startY//2, endX//2, endY))
print(quadtree(startX//2, 0, endX, endY//2))
print(quadtree(startX//2, startY//2, endX, endY))
:4등분으로 쪼개 각자의 재귀로 말려들어가게 했다.
:
뭐.. 가 문제였을까. 왜 혼자 힘으로 풀 수 없는걸까.. 하아.. 다른 사람들 풀이 보고 정리하기로.
import sys
input = sys.stdin.readline
n = int(input())
board = [list(map(int, input().strip())) for _ in range(n)]
def quadtree(x, y, n):
if n == 1:
print(board[x][y], end="")
return
canCompress = True
for i in range(x, x+ n):
if not canCompress:
break
for j in range(y, y + n):
if board[i][j] != board[x][y]:
canCompress = False
break
if canCompress:
print(board[x][y], end="")
else:
print('(', end="")
quadtree(x, y, n//2)
quadtree(x, y + n//2, n//2)
quadtree(x + n//2, y, n//2)
quadtree(x + n//2, y + n//2, n//2)
print(')', end="")
quadtree(0, 0, n)
와.. 수정하면서 괜한데서 잘못해서 시간 꽤 잡아먹었다..
그래도 이제 디버깅이 된다 .. 그것에 만족해야하나..
하여간 이제 분할 정복 어떤 식인지 감은 잡히는 것 같다. 코드 구현이 안 돼서 그렇지.
오늘 밤새 열심히 재귀 문제 달려보자.
'CodingTest > Baekjun Online Judge' 카테고리의 다른 글
| [ BOJ / 파이썬 ] 1780 종이의 개수 (0) | 2022.07.25 |
|---|---|
| [ BOJ / 파이썬 ] 10870 피보나치 수 5 (0) | 2022.07.25 |
| [ BOJ / 파이썬 ] 1991 트리 순회 (0) | 2022.07.25 |
| [ BOJ / 파이썬 ] 1074 Z (0) | 2022.07.25 |
| [ BOJ / 파이썬 ] 11729 하노이 탑 이동 순서 (0) | 2022.07.25 |