자라는 개발자/문제풀이

백준 c++ 2630 색종이 만들기

자란다 2022. 3. 31. 22:13
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