Behind.dev

[백준] 1992번 : 쿼드트리 - c++ 본문

코딩테스트/BAEKJOON

[백준] 1992번 : 쿼드트리 - c++

뽀잉뽀잉뽀 2024. 4. 20. 23:08

https://www.acmicpc.net/problem/1992

 

1992번: 쿼드트리

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

www.acmicpc.net

 

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

vector<vector<int>> board;
int n;

void quadTree(int x, int y, int size) {

	int color = board[x][y];

	for (int i = x; i < x + size; i++) {
		for (int j = y; j < y + size; j++) {

			if (color != board[i][j]) {
				cout << "(";
				quadTree(x, y, size / 2);
				quadTree(x, y + (size / 2), size / 2);
				quadTree(x + (size / 2), y, size / 2);
				quadTree(x + (size / 2), y + (size / 2), size / 2);
				cout << ")";
				return;
			}
		}
	}
	if (color == 0)cout << 0;
	else cout << 1;
}

int main() {
	
	cin >> n;
	board.resize(n, vector<int>(n));

	for (int i = 0; i < n; i++) {
		string s;
		cin >> s;

		for (int j = 0; j < n; j++) {
			board[i][j] = s[j] - '0';
		}
	}
	
	quadTree(0, 0, n);
	return 0;
}

 

 

'코딩테스트 > BAEKJOON' 카테고리의 다른 글

[백준] 12865번 : 평범한 배낭 - c++  (0) 2024.05.02
[백준] 1074번 : Z - c++  (0) 2024.04.29
[백준] 1780번 : 종이의 개수 - c++  (0) 2024.04.22