728x90

www.acmicpc.net/problem/1992

 

1992번: 쿼드트리

첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또

www.acmicpc.net

문제에 주어진대로 그대로 재귀로 구현하면 된다. 

#include <iostream>
#include <vector>
#include <cmath>
#include <string>
using namespace std;

vector<string> v;

void compress(int row, int col, int size) {
	if (size == 1) {

	}
	char first = v[row][col];
	bool flag = true;
	for (int i = row; i < row + size; i++) {
		for (int j = col; j < col + size; j++) {
			if (v[i][j] != first) {
				flag = false;
				break;
			}
		}
		if (!flag) {
			break;
		}
	}
	if (!flag) {
		cout << '(';
		compress(row, col, size / 2);
		compress(row, col + size / 2, size / 2);
		compress(row + size / 2, col, size / 2);
		compress(row + size / 2, col + size / 2, size / 2);
		cout << ')';
	}
	else {
		cout << first;
	}
}

int main() {
	cin.tie(NULL);
	ios::sync_with_stdio(false);
	int n;
	cin >> n;
	v = vector<string>(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	compress(0, 0, n);
	return 0;
}
728x90

'알고리즘 문제' 카테고리의 다른 글

[백준] 1013번 Contact  (0) 2021.01.08
[백준] 10974번 모든 순열  (0) 2021.01.05
[백준] 1074번 Z  (0) 2021.01.04
[백준] 1004번 어린 왕자  (0) 2021.01.03
[백준] 11866번 요세푸스 문제 0  (0) 2021.01.03

+ Recent posts