알고리즘 문제풀이/백준

[백준/BOJ] 2563번 색종이 (C++)

노력의천재 2021. 9. 26. 18:09

https://www.acmicpc.net/problem/2563

 

2563번: 색종이

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록

www.acmicpc.net

색종이를 붙인 위치 x, y ~ x + 10, y + 10 영역을 2차원 배열의 좌표로 1로 만들어준다. 이 1의 개수가 전체 영역의 넓이라고 할 수 있다. 이때 중복되는 영역은 한번만 셀 수 있도록 현재 2차원 배열 좌표의 값이 1일땐 continue 처리 해준다.

 

#include <iostream>
#include <algorithm>
using namespace std;

int N, answer;
int map[101][101];

int main() {
    ios_base::sync_with_stdio(false); 
    cin.tie(0);
    
    cin >> N;
    for(int i = 0; i < N; i++) {
        int x, y;
        cin >> x >> y;
        for(int a = x; a < x + 10; a++) {
            for(int b = y; b < y + 10; b++) {
                if(map[a][b] == 1) continue;   
                map[a][b] = 1;
                answer++;
            }
        }
    }
    
    cout << answer;
}