www.acmicpc.net/problem/10163

 

10163번: 색종이

평면에 색깔이 서로 다른 직사각형 모양의 색종이 N장이 하나씩 차례로 놓여진다. 이때 색종이가 비스듬하게 놓이는 경우는 없다. 즉, 모든 색종이의 변은 서로 평행하거나, 서로 수직이거나 둘

www.acmicpc.net

입력으로 x시작좌표(sx), y시작좌표(sy), 너비(width), 높이(height)가 주어집니다.

list배열에 (sx, sy) ~ (sx + width, sy + height)만큼 번호인 i를 넣어줍니다.

만약 list[x][y]에 값이 있으면 덮어씌우므로 num[이전의 번호]--를 해줘야합니다.

 

 

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
35
36
37
38
#include <iostream>
using namespace std;
 
int list[101][101], num[101];
int N;
 
void print() {
    for (int i = 1; i <= N; i++) {
        cout << num[i] << '\n';
    }
}
 
void input() {
    int sx, sy, width, height;
    cin >> N;
    for (int i = 1; i <= N; i++) {
        cin >> sx >> sy >> width >> height;
        for (int x = sx; x < sx + width; x++) {
            for (int y = sy; y < sy + height; y++) {
                if (list[x][y]) {
                    num[list[x][y]]--;
                }
                list[x][y] = i;
                num[list[x][y]]++;
            }
        }
    }
}
 
int main() {
    cin.tie(NULL); cout.tie(NULL);
    ios::sync_with_stdio(false);
 
    input();
    print();
 
    return 0;
}
cs

 

'algorithm > Implementation' 카테고리의 다른 글

boj 3985 롤 케이크  (0) 2021.02.25
boj 2116 주사위 쌓기  (0) 2021.02.25
boj 20055 컨베이어 벨트 위의 로봇  (0) 2021.02.23
boj 2331 반복수열  (0) 2021.02.23
boj 10157 자리배정  (0) 2021.02.17

+ Recent posts