백준/기타

[백준/C++] 1992번: 쿼드트리

Koalitsiya 2023. 5. 22. 16:14

 

풀이

간단한 분할정복 문제이다.

#include <iostream>
#include <string>

using namespace std;

string str[64];

void conquer(int y, int x, int size) {
	char state = str[y][x];

	for (int i = y; i < y + size; i++)
		for (int j = x; j < x + size; j++)
			if (state != str[i][j]) {
				cout << '(';
				conquer(y, x, size / 2);
				conquer(y, x + size / 2, size / 2);
				conquer(y + size / 2, x, size / 2);
				conquer(y + size / 2, x + size / 2, size / 2);
				cout << ')';

				return;
			}

	cout << state;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n;
	cin >> n;

	for (int i = 0; i < n; i++)
		cin >> str[i];

	conquer(0, 0, n);

	return 0;
}