[Baekjoon] 백준 2563 색종이 - c++

재우·2022년 12월 21일
0

Baekjoon

목록 보기
15/21
post-thumbnail

📘 문제

문제링크 : https://www.acmicpc.net/problem/2563 (단계별로 풀어보기 : 2차원 배열)

📝 문제 풀이

해당 문제는 순수한 마음으로 풀면된다는 것이 재밌어서 가져와봤다.
문제를 보면 되게 수학적으로 풀어야할거 같은데, 흰색 도화지 영역이 제한되어 있고, 색종이 수가 제한되어 있어 2차원배열로 풀 수 있다. 100100 크기의 배열을 선언하여 배열 한칸이 11 네모 한칸이라고 생각하고 색종이의 왼쪽하단 좌표가 주어졌을 때 색종이 해당하는 부분을 1로 채워줘서 마지막에 배열을 완전탐색하여 합을 계산하여 풀었다.


만약에 2*2 색종이가 1,1 에 놓였다고 했을 때 배열 상태를 그려 본 것이다.

해당 문제의 제한사항이 사라지면 꽤나 어려운 문제가 될 것 같다.

💻 소스코드

#include <iostream>
#define fastio ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
using namespace std;

int main()
{
    int arr[100][100];
    for (int i = 0; i < 100; i++)
        fill(arr[i], arr[i] + 100, 0);

    int N, x, y;
    cin >> N;

    for (int i = 0; i < N; i++)
    {
        cin >> x >> y;
        for (int i = x; i < x + 10; i++)
            for (int j = y; j < y + 10; j++)
                arr[i][j] = 1;
    }

    int sum = 0;
    for (int i = 0; i < 100; i++)
        for (int j = 0; j < 100; j++)
            sum += arr[i][j];
    cout << sum << endl;
    return 0;
}```


0개의 댓글