백준 문제풀이

백준 1780번 - C++

diligent_gideok 2022. 4. 30. 06:41
#include <bits/stdc++.h>
using namespace std;
int board[2200][2200];
int aa, bb, cc;
void fun3(int a, int b,int n) { // 시작점 (a,b), 3의 n 승
	int flag = board[a][b];
	int flag1=0;
	//cout << '(' << a << ',' << b << ')' << '\n';
	for (int i = 0; i < pow(3, n); i++) {
		for (int j = 0; j < pow(3, n); j++) {
			if (board[i][j] == flag) continue;
			else {
				for (int ii = 0; ii < 3; ii++) {
					for (int jj = 0; jj < 3; jj++) {
						fun3(pow(3, ii) + a, pow(3, jj), n - 1);
					}
				}
				cout << '(' << i << ',' << j << ')' << '\n';
				i = pow(3, n);
				j = pow(3, n);
				flag1 = 1;
			}
			
		}
	}
	if (flag1 == 0) {
		if (flag == -1) aa++;
		else if (flag == 0) bb++;
		else cc++;
	}

}
// base condition : for문을 돌려서 모든 숫자가 같으면 return
// 

int main(void) {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int n=0, a;
	cin >> a;
	
	for (int i = 0; i < a; i++)
		for (int j = 0; j < a; j++)
			cin >> board[i][j];
	while (pow(3,n) != a) {
		n += 1;
	}
	fun3(0, 0, n);
	cout << aa << '\n' << bb << '\n' << cc;
}

'백준 문제풀이' 카테고리의 다른 글

백준 1182번 - C++  (0) 2022.04.30
백준 11729번 - C++  (0) 2022.04.30
백준 1074번 - C++  (0) 2022.04.30
백준 10026번 - C++  (0) 2022.04.30
백준 7562번 - C++  (0) 2022.04.30