문제설명

 

소스코드

#include <iostream>
using namespace std;
int main() 
{
    int whitepaper[100][100] = { 0 };
    int N; int row; int col; int total = 0;
    cin >> N;
    for (int i = 0; i < N; ++i)
    {
        cin >> row >> col;
        for (int j = row; j < row + 10; ++j) for (int k = col; k < col + 10; ++k) whitepaper[j][k] = 1;
    }
    for (int i = 0; i < 100; ++i) for (int j = 0; j < 100; ++j) total += whitepaper[i][j];
    cout << total << endl;
}

 

풀이

  • 100X100 2차원 배열을 선언하고 0으로 초기화한다.
  • 사용자로부터 행과 열을 입력받은 수를 각각 row와 col이라고 하면 row + 10, col + 10인 부분은 모두 1로 바꿔준다.
  • 1의 수를 모두 더하면 정답이다.
  • 아래의 코드는 위 과정을 시각적으로 나타낸다.
#include <iostream>
using namespace std;
void print(int arr[100][100])
{
    for (int i = 0; i < 100; ++i)
    {
        for (int j = 0; j < 100; ++j) cout << arr[i][j] << " ";
        cout << endl;
    }
}
int main() 
{
    int whitepaper[100][100] = { 0 };
    int N; int row; int col; int total = 0;
    cin >> N;
    for (int i = 0; i < N; ++i)
    {
        cin >> row >> col;
        for (int j = row; j < row + 10; ++j) for (int k = col; k < col + 10; ++k) whitepaper[j][k] = 1;
    }
    for (int i = 0; i < 100; ++i) for (int j = 0; j < 100; ++j) total += whitepaper[i][j];
    cout << total << endl;
    print(whitepaper);
}