본문 바로가기

Algorithm/BAEKJOON

[BOJ] 2630번 색종이 만들기 (C++)

728x90
반응형

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

 

2630번: 색종이 만들기

첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다.

www.acmicpc.net

 

#include <iostream>
using namespace std;
 
int n;
int paper[129][129];
int w_cnt = 0, b_cnt = 0;
 
void divconquer(int x, int y, int v){
	int cnt = 0;
	for(int i = x; i < x + v; i++){
		for(int j = y; j < y + v; j++){
			if(paper[i][j]) cnt++;
		}
	}
 
	if(cnt == 0) w_cnt++;
	else if(cnt == v * v) b_cnt++;
	else{
		divconquer(x, y, v / 2);
		divconquer(x, y + v / 2, v / 2);
		divconquer(x + v / 2, y, v / 2);
		divconquer(x + v / 2, y + v / 2, v / 2);
	}
}
 
int main() {
	cin >> n;
 
	for(int i = 0; i < n; i++){
		for(int j = 0; j < n; j++){
			cin >> paper[i][j];
		}
	}
	divconquer(0, 0, n);
 
	cout << w_cnt << endl;
	cout << b_cnt << endl;
	return 0;
}
728x90
반응형

'Algorithm > BAEKJOON' 카테고리의 다른 글

[BOJ] 1461번 도서관 (C++)  (0) 2022.02.13
[BOJ] 11652번 카드 (C++)  (0) 2022.02.12
[BOJ] 1697번 숨바꼭질 (C++)  (0) 2022.02.12
[BOJ] 1931번 회의실 배정 (C++)  (0) 2022.02.11
[BOJ] 6068번 시간 관리하기 (C++)  (0) 2022.02.11