c c++ 언어 공부

백준 1531번 : 투명 (C 언어)

Code C 2023. 9. 21. 12:24

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

 

1531번: 투명

첫째 줄에 N과 M이 주어진다. N은 0보다 크거나 같고, 50보다 작거나 같다. M은 0보다 크거나 같고, 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 종이의 좌표가 주어진다. 왼쪽 아래 모서리의 x, y좌

www.acmicpc.net

Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <string.h>
 
int main()
{
    int arr[101][101= { 0, };
    int x1, y1, x2, y2;
    int n, m;
    int count = 0;
    scanf("%d %d"&n, &m);
    while (n--)
    {
        scanf("%d %d %d %d"&x1, &y1, &x2, &y2);
        for (int i = y1; i <= y2; i++)
        {
            for (int j = x1; j <= x2; j++)
            {
                arr[i][j]++;
            }
        }
    }
    for (int i = 1; i <= 100; i++)
    {
        for (int j = 1; j <= 100; j++)
        {
            if (arr[i][j] > m)
            {
                count++;
            }
            continue;
        }
    }
    printf("%d", count);
}
cs

문제 설명:

세준이는 1×1 크기의 그림으로 모자이크한 100×100 크기의 그림이 있습니다. 세준이는 이 그림 중 일부를 불투명한 종이로 가리려고 합니다. 그러나 일정 수 이하의 종이가 올려져 있으면 그 부분의 그림은 보일 수 있습니다. 주어진 불투명한 종이의 위치와 크기를 바탕으로 보이지 않는 그림의 개수를 세어야 합니다.

코드 설명:

 
  1. n개의 종이에 대해 각 종이가 덮인 부분을 배열 arr에 표시합니다.
  2. 각 좌표별로 덮인 횟수를 확인하여 보이지 않는 그림의 개수를 계산합니다.
  3. 계산된 보이지 않는 그림의 개수를 출력합니다.