PS/Baekjoon Online Judge

[백준 2630] 색종이 만들기 [C]

kimyoungrok 2021. 8. 5. 14:09
728x90

백준 - 2630


풀이

입력받은 N을 이용해 정사각형을 분할하면서 전부다 1 또는 0일때까지 탐색을 하면 된다.


소스코드

#include <stdio.h>
int paper[128][128], w, b;
void color(int x, int y, int n){
    int cnt = 0;
    for (int i = x; i < x+n; i++)
        for (int j = y; j < y+n; j++)
            paper[i][j] && cnt++;
    if (cnt == n*n)	b++;
    else if (!cnt) w++;
    else {
        color(x, y, n/2);
        color(x, y+n/2, n/2);
        color(x+n/2, y, n/2);
        color(x+n/2, y+n/2, n/2);
    }	
}
int main(){
    int N;
    scanf("%d", &N);
    for (int i = 0; i < N*N; i++)
        scanf("%d", &paper[i/N][i%N]);
    color(0, 0, N);
    printf("%d\n%d", w, b);
}

출처

 

2630번: 색종이 만들기

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

www.acmicpc.net

 

728x90

'PS > Baekjoon Online Judge' 카테고리의 다른 글

[백준 1764] 듣보잡 [C/C++]  (0) 2021.08.06
[백준 1260] DFS와 BFS [C]  (0) 2021.08.05
[백준 1026] 보물 [C]  (0) 2021.08.05
[백준 1541] 잃어버린 괄호 [C]  (0) 2021.08.04
[백준 10953] A+B - 6 [C]  (0) 2021.08.04