백준 c++ 2630 색종이 만들기
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;
}
}
앞서 분할 정복 문제를 풀어보고 비슷한 류로 찾아서 풀어보았다.
들어온 크기만큼 같은값만 있는지 체크한뒤 처리했다.
Author And Source
이 문제에 관하여(백준 c++ 2630 색종이 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jaranda/백준-c-2630-색종이저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)