본문 바로가기

코딩 테스트

백준 1992 쿼드트리

재귀 안쪽에서 for 문 시작과 끝 범위에 대한 생각을 꼭 해야한다.

 

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
int n;

using namespace std;

void Recursion(int x, int y,int len, vector<vector<int>>& vec)
{

	bool one = true;
	bool zero = true;

	for (int i = x; i < x + len; ++i)
	{
		for (int j = y; j < y + len; ++j)
		{
			if (vec[i][j] == 1)
			{
				zero = false;
			}
			else if (vec[i][j] == 0)
			{
				one = false;
			}
		}
	}

	if (one && !zero)
	{
		cout << '1';

		return;
	}
	else if (!one && zero)
	{
		cout << '0';

		return;
	}
	else if (one && zero)
	{
		return;
	}

	cout << '(';

	int divsize = len / 2;
	Recursion(x, y, divsize, vec);
	Recursion(x, y + divsize, divsize, vec);
	Recursion(x + divsize, y, divsize, vec);
	Recursion(x + divsize, y + divsize, divsize, vec);



	cout << ')';
}



int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);	cout.tie(0);

	cin >> n;

	vector<vector<int>> vec(n, vector<int>(n, -1));

	int k = 0;

	for (int i = 0; i < n; ++i)
	{
		string str;
		cin >> str;
		for (int j = 0; j < str.size(); ++j)
		{
			vec[k][j] = str[j] - '0';
		}
		k++;
	}

	Recursion(0, 0, vec.size(), vec);


	
	return 0;
}

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

백준 17829 - 222풀링  (0) 2024.09.09
백준 2493 탑  (0) 2024.09.09
백준 - 14400 편의점 2  (0) 2024.09.03
백준 - 1541 잃어버린 괄호  (0) 2024.09.03
백준 - 11729 하노이의 탑  (0) 2024.08.27