코딩테스트/백준

[백준]10163번 색종이 - Java

GAEBAL 2022. 3. 1. 23:16
728x90

문제

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

 

10163번: 색종이

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

www.acmicpc.net

 

풀이

백준에는 뭐 색종이 유니버스가 있나보다 종이 자르기도 있고 무슨 뭐였지 직사각형 면적 더하기 그런 것도 있고,,,

암튼 색종이 첫번째 문제 풀고나서 이런 문제들 푸니까 어떻게 풀어야할지 딱 보인다고 해야하나 암튼 쉬워졌다.

 

https://seokmimmmmmmmm.tistory.com/25

 

[백준]2563번 색종이 - Java

문제 https://www.acmicpc.net/problem/2563 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색

seokmimmmmmmmm.tistory.com

-> 내가 말한 색종이 첫번째 문제

 

암튼 지금 풀이하는 이 문제도 N의 크기가 최대 100까지여서 이런 풀이가 가능할 듯??

2차원 배열에 색칠하듯이 풀면 된다

 

코드

// 10163번 색종이
// https://www.acmicpc.net/problem/10163

package BAEKJOON;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Num10163_색종이 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();
        int N = Integer.parseInt(br.readLine());
        int[][] arr = new int[1001][1001];
        for (int i = 1; i <= N; i++) {
            st = new StringTokenizer(br.readLine());
            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());
            int garo = Integer.parseInt(st.nextToken());
            int sero = Integer.parseInt(st.nextToken());

            for (int j = x; j < x + garo; j++) {
                for (int k = y; k < y + sero; k++) {
                    arr[j][k] = i;
                }
            }
        }

        for (int i = 1; i <= N; i++) {
            int count = 0;
            for (int j = 0; j < 1001; j++) {
                for (int k = 0; k < 1001; k++) {
                    if (arr[j][k] == i) {
                        count++;
                    }
                }
            }
            sb.append(count).append("\n");
        }
        sb.setLength(sb.length() - 1);

        System.out.println(sb);

    }
}
728x90