티스토리 뷰
728x90
https://www.acmicpc.net/problem/1992
- 해설 :
위 그림에서 왼쪽의 영상은 오른쪽의 배열과 같이 숫자로 주어지며, 이 영상을 쿼드 트리 구조를 이용하여 압축하면 "(0(0011)(0(0111)01)1)"로 표현된다. N ×N 크기의 영상이 주어질 때, 이 영상을 압축한 결과를 출력하는 문제이다.
- 풀이 :
재귀를 이용하여 가로, 세로를 2씩나눈 4가지 경우르 분할하여 각 케이스에 대해 압축할 수 있는지 여부를 확인하는 문제이다.
- 소스코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import sys
input = sys.stdin.readline
def ans(x,y,n):
check = board[x][y]
for i in range(x,n+x):
for j in range(y,n+y):
if check != board[i][j]:
a = ans(x,y,n//2)
b = ans(x,y+n//2,n//2)
c = ans(x+n//2,y,n//2)
d = ans(x+n//2,y+n//2,n//2)
return '('+a+b+c+d+')'
if check == 0:
return '0'
else:
return '1'
if __name__ == "__main__":
N = int(input())
board = [list(map(int,input().strip())) for _ in range(N)]
print(ans(0,0,N))
|
cs |
320x100
'Algorithm > Data Structure' 카테고리의 다른 글
(Python) - BOJ(2346번) : 풍선 터뜨리기 (0) | 2022.01.30 |
---|---|
(Python) - BOJ(2164번) : 카드 2 (0) | 2022.01.30 |
(Python) - BOJ(1966번) : 프린터 큐 (0) | 2022.01.30 |
(Python) - BOJ(1927번) : 최소 힙 (0) | 2022.01.28 |
(Python) - BOJ(1874번) : 스택 수열 (0) | 2022.01.28 |
댓글
© 2022 WonSeok, All rights reserved