백준2563 - 색종이

ieunjung·2020년 8월 23일

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

문제 파악

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 붙인다. 이때 색종이는 겹쳐서 붙을 수도 있다. 색종이가 붙은 넓이를 구하라.

예제 파악

색종이의 왼쪽 모서리 좌표가 배열로 주어진다.

[[3, 7], [15, 7], [5, 2]]

흰 도화지를 100X100 크기의 배열로 두고, 색종이가 붙은 영역을 true로 채운다.
왼쪽 모서리 좌표에서 오른쪽으로 +10, 위쪽으로 +10 에 해당하는 영역을 채운다.

도화지 배열에서 true인 요소의 개수를 세어 답을 구한다.

코드

function solution(n, data) {
    let paper = new Array(100).fill().map(el => new Array(100).fill(false));

    for (let i = 0; i < n; i++) {
        const colorPaper = data[i];
        const x = colorPaper[0], y = colorPaper[1];

        for (let j = 0; j < 10; j++) {
            for (let m = 0; m < 10; m++) {
                paper[x + j][y + m] = true;
            }
        }
    }

    const answer = paper.reduce((prev, curr) => {
        for (const el of curr) {
            if (el) {
                prev++;
            }
        }

        return prev;
    }, 0);

    console.log(answer);
}
profile
Done is better than perfect

0개의 댓글