자료구조&알고리즘/백준

[백준] 색종이 2563번 (PYTHON,JAVA)

고쩡이 2024. 3. 7. 11:52

✔ 문제 2563 색종이

문제 바로가기 💨 

핵심 아이디어

2차원 배열로 저장 및 처리한다.시작점 좌표를 기준으로 해당 사각형크기만큼 배열에 1을 표시한다.


PYTHON

N = int(input())
arr = [[0]*102 for _ in range(102)]
for _ in range(N):
    # [1] 해당 영역을 1로 표시
    sj, si = map(int, input().split())
    for i in range(si,si + 10):
        for j in range(sj, sj + 10):
            arr[i][j] = 1
    # [2] 1의 개수를 cnt => 넓이
    ans = 0
    for lst in arr:
        ans += sum(lst)

print(ans)

JAVA

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        
        int[][] arr = new int[102][102];
        
        // N 개의 좌표에 해당하는 10X10 영역을 1로 표시
        for(int k = 0; k < N; k++){
            StringTokenizer tokenizer = new StringTokenizer(br.readLine());
            int sj = Integer.parseInt(tokenizer.nextToken());
            int si = Integer.parseInt(tokenizer.nextToken());
            
            for (int i = si; i < si + 10; i++){
                for (int j = sj; j < sj + 10; j++){
                    arr[i][j] = 1;
                }
            }
        }
        // 1의 개수를 cnt => 넓이
        int ans = 0;
        for(int[] row : arr){
            for(int cell : row){
                ans += cell;
            }
        }
        System.out.println(ans);
    }
}