-
[1992] 쿼드트리BOJ 2021. 11. 4. 23:59
https://www.acmicpc.net/problem/1992
1992번: 쿼드트리
첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또
www.acmicpc.net
<문제>
분할정복, 구역을 정사각형단위로 1/4씩 분할하고, 구역 전체가 동일한 문자로 구성되었을때 해당 문자를 출력,
구역을 1/4씩 분할하기 직전에 '('를, 분할한 후에 ')'를 출력해주면 출력형식을 맞춰줄 수 있다.
<소스코드>
1234567891011121314151617181920212223242526272829303132333435#include <bits/stdc++.h>using namespace std;int n;char a[200][200];bool isSame(int d, int r, int c) {int i, j;char x = a[r][c];for (i = r; i < r + d; i++) {for (j = c; j < c + d; j++) {if (i < 0 || j < 0 || i >= n || j >= n) continue;if (x != a[i][j]) return false;}}return true;}void f(int d, int r, int c) {if (isSame(d, r, c) == true) {cout << a[r][c];} else {cout << '(';f(d / 2, r, c);f(d / 2, r, c + d / 2);f(d / 2, r + d / 2, c);f(d / 2, r + d / 2, c + d / 2);cout << ')';}}int main(void) {cin >> n;int i, j;for (i = 0; i < n; i++)for (j = 0; j < n; j++) cin >> a[i][j];f(n, 0, 0);return 0;}cs 'BOJ' 카테고리의 다른 글
[2234] 성곽 (0) 2021.11.05 [15686] 치킨 배달 (0) 2021.11.05 [1700] 멀티탭 스케줄링 (0) 2021.11.04 [13907] 세금 (0) 2021.11.03 [17267] 상남자 (0) 2021.11.03