[백준]#10163 색종이

SeungBird·2020년 8월 26일
0

⌨알고리즘(백준)

목록 보기
15/401

문제

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

입력

입력의 첫 번째 줄에는 색종이의 장수를 나타내는 정수 N (1 ≤ N ≤ 100)이 주어진다. 이어서 N장의 색종이에 관한 입력이 각 색종이마다 한 줄씩 차례로 주어진다. 색종이가 놓이는 평면은 가로 최대 101칸, 세로 최대 101칸으로 구성된 격자 모양이다. 격자의 각 칸은 가로, 세로 길이가 1인 면적이 1인 정사각형이다.

편의상 가로 6칸, 세로 6칸으로 이루어진 격자의 예를 들어 설명하면, 각 칸에 표시된 값 (a,b)는 해당 칸의 번호를 나타낸다. 가장 왼쪽 아래의 칸은 (0,0) 가장 오른 쪽 위의 칸은 (5,5)이다.

색종이가 놓인 상태는 가장 왼쪽 아래 칸의 번호와 너비, 높이를 나타내는 네 정수로 표현한다.

출력

입력에서 주어진 순서에 따라 N장의 색종이를 평면에 놓았을 때, 입력에서 주어진 순서대로 각 색종이가 보이는 부분의 면적을 한 줄에 하나씩 하나의 정수로 출력한다. 만약 색종이가 보이지 않는다면 정수 0을 출력한다.

예제 입력 1

2
0 0 10 10
2 2 6 6

예제 출력 1

64
36

풀이

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[][] map = new int[101][101];
        int N = sc.nextInt();
        int[] cnt = new int[N+1];

        for(int i=1; i<=N; i++) {
            int y = sc.nextInt();
            int x = 100- sc.nextInt();
            int l = sc.nextInt();
            int h = sc.nextInt();

            for(int j=x-h+1; j<=x; j++) {
                for(int k=y; k<=y+l-1; k++) {
                    map[j][k]=i;
                }
            }
        }

        for(int i=0; i<101; i++) {
            for(int j=0; j<101; j++) {
                if(map[i][j]!=0)
                    cnt[map[i][j]]++;
            }
        }
        for(int i=1; i<N+1; i++)
            System.out.println(cnt[i]);
    }
}
profile
👶🏻Jr. Programmer

0개의 댓글