풀이

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

#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;
}

'백준 > 기타' 카테고리의 다른 글

[백준/C++] 2630번: 색종이 만들기  (0) 2023.05.22
[백준/C++] 1074번: Z  (0) 2023.05.22
[백준/C++] 2667번 : 단지번호붙이기  (1) 2023.05.18
[백준/C++] 18111번: 마인크래프트  (0) 2023.04.19
[백준/C++] 10773번 : 제로  (0) 2023.04.10

+ Recent posts