[BOJ] 2630 번 : 색종이 만들기

2024. 8. 16. 08:37Algorithm

1. problem : 

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

 

 

2. solution 1 :

#include <bits/stdc++.h>
using namespace std;
int paper[129][129];
int cnt[2]; 
int N; 

bool check(int x, int y, int z) {
	for (int i = x; i < x + z; i++) {
		for (int j = y; j < y + z; j++) {
			if (paper[x][y] != paper[i][j]) {
				return false;
			}
		}
	}
	return true;
}
void solve(int x, int y, int z) {
	if (check(x, y, z)) {
		cnt[paper[x][y]] += 1;
		return;
	}
	z /= 2;
	for (int i = 0; i < 2; i++) {
		for (int j = 0; j < 2; j++) {
			solve(x + i * z, y + j * z, z);
		}
	}
}

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

	cin >> N;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			cin >> paper[i][j];
		}
	}
	solve(0, 0, N);
	for (int i = 0; i < 2; i++) cout << cnt[i] << '\n';
}

 

 

'Algorithm' 카테고리의 다른 글

[BOJ] 1182번 : 부분수열의 합  (0) 2024.08.17
[BOJ] 1992번 : 쿼드트리  (0) 2024.08.16
[BOJ] 1780번 : 종이의 개수  (0) 2024.08.15
[BOJ] 17478 : 재귀함수가 뭔가요?  (0) 2024.08.15
[BOJ] 11729번 : 하노이 탑 이동순서  (0) 2024.08.15