728x90
반응형
2630 색종이 만들기
문제풀이
#include <iostream>
using namespace std;
int res[2];
int arr[130][130];
void ck(int x, int y, int N){
bool flag = true;
for(int i = x; i < x + N; i++)
for(int j = y; j < y + N; j++)
if(arr[i][j] != arr[x][y]){
flag = false;
break;
}
if(flag)
res[arr[x][y]]++;
else
{
for(int a = x; a < x + N; a += N/2 )
for(int b = y; b < y + N; b += N/2)
ck(a, b, N/2);
}
}
int main(void){
int N;
cin >> N;
for(int i = 0; i < N; i++){
for(int j = 0; j < N; j++){
cin >> arr[i][j];
}
}
ck(0, 0, N);
for(int i = 0; i < 2; i++){
cout << res[i] << endl;
}
}
앞서 분할 정복 문제를 풀어보고 비슷한 류로 찾아서 풀어보았다.
들어온 크기만큼 같은값만 있는지 체크한뒤 처리했다.
728x90
반응형
'자라는 개발자 > 문제풀이' 카테고리의 다른 글
백준 c++ 14582 오늘도 졌다 (0) | 2022.04.04 |
---|---|
백준 c++ 24912 카드 색칠 (0) | 2022.04.03 |
백준 c++ 11659 구간 합 구하기 4 (0) | 2022.03.30 |
백준 c++ 9095 1,2,3 더하기 (0) | 2022.03.30 |
백준 c++ 3의 배수 (0) | 2022.03.29 |