
풀이
간단한 분할정복 문제이다.
#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 |