반응형
알고리즘 분류
- 분할 정복
- 재귀
SOLUTION
import sys
def quad_tree(x,y,N):
point = tree[x][y]
for i in range(x,x+N):
for j in range(y,y+N):
if point != tree[i][j]: # 같은 색의 점이 아니면 분활
answer.append("(") # 분할될 때 마다 괄호 추가
quad_tree(x,y,N//2) # 2 사분면
quad_tree(x,y+N//2,N//2) # 3 사분면
quad_tree(x+N//2,y,N//2) # 1 사분면
quad_tree(x+N//2,y+N//2,N//2) # 4 사분면
answer.append(")") # 분할될 때 마다 괄호 추가
return answer
if point == '1':
answer.append('1')
if point == '0':
answer.append('0')
return answer
N = int(sys.stdin.readline())
tree = [sys.stdin.readline().rstrip() for _ in range(N)]
answer = []
print(''.join(quad_tree(0,0,N))) # 좌표 0,0 부터 순차적으로 탐색
'코딩테스트 대비 > 단계별 코딩 테스트 준비(27일 과정)' 카테고리의 다른 글
[우선순위 큐/Python] 11279번: 최대 힙 - 효과는 굉장했다! (0) | 2022.02.19 |
---|---|
[분할 정복/Python] 10830번: 행렬 제곱 - 효과는 굉장했다! (0) | 2022.02.19 |
[다이나믹 프로그래밍/Python] 2579번: 계단 오르기 - 효과는 굉장했다! (0) | 2022.02.19 |
[다이나믹 프로그래밍/Python] 1003번: 피보나치 함수 - 효과는 굉장했다! (0) | 2022.02.19 |
[그리디 알고리즘/Python] 1931번: 회의실 배정 - 효과는 굉장했다! (0) | 2022.02.19 |