[JAVA] 색종이

NoHae·2025년 8월 25일

백준

목록 보기
71/106

문제 출처

https://www.acmicpc.net/problem/2563
단계별로 풀어보기 > 2차원 배열 > 색종이

문제 설명

가로, 세로 각각 100인 흰색 도화지 위에 가로, 세로 각각 10인 정사각형 모양의 검은색 색종이를 올릴 때(흰색 도화지의 변과 검은 색종이 변이 평행하게 올린다.) 검은 색종이의 전체 영역을 구하라.

접근 방법

흰색 도화지를 2차원 배열로 초기화 한다. 이 후, 검은색 색종이의 정보를 입력 받는데, 검은색 색종이의 크기가 10 x 10으로 일정하므로 2중 for문의 조건으로 각각 가로 세로를 입력한다.
이 후, 검은색으로 정보를 입력할 때마다 넓이에 1씩 더해준다.

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

public class 색종이 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());

        int area = 0;

        int[][] paper = new int[100][100];

        for(int i = 0; i < N; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());

            int row = Integer.parseInt(st.nextToken());
            int col = Integer.parseInt(st.nextToken());

            for(int j = row; j < row + 10; j++){
                for(int k = col; k < col + 10; k++){
                    if(paper[j][k] == 1) continue;
                    paper[j][k] = 1;
                    area++;
                }
            }
        }

        bw.write(String.valueOf(area));
        bw.flush();
        bw.close();
        br.close();
    }

}

알게된 점

시간 복잡도는 O(N x 100) -> O(N) 이다.

문제푼 흔적

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글