[Java] 백준 2563번: 색종이

hansung's·2024년 2월 21일
0

문제 url:
색종이

문제:

🤔 문제 알아보기

  • 큰 도화지 100*100안에 검은색 색종이를 덮은 후 해당 영역의 넓이를 구하는 문제
  • 즉, 100*100 배열에다가 해당 인덱스(크기 10 x 10)에 값을 넣은 다음 해당 구역의 개수를 구한다
    • ※ 주의 -> 겹치는 부분은 하나로만 봐야하기 때문에 해당 부분의 예외처리 필요
  • 도화지 개수(n)만큼 반복해서 색종이 크기만큼 도화지 배열에 값을 넣어 크기를 계산
  • 그 후 크기를 출력하면 된다.

😎 준비하기

1. BufferedReader를 이용해 입력을 받는다.
2. 100 * 100 크기의 배열을 생성
3. 색종이 개수(n)개를 입력받기
4. 색종이 넓이를 계산할 변수 count 정의
5. 색종이 개수만큼 반복하는 반복문 생성
6. 색종이와 도화지간의 간격 row, col을 입력받은 후 해당 값을 변수에 저장
7. row와 col부터 10의 크기만큼 도화지(100*100)배열에 값을 주입
8. 해당 값을 계산하는데, 단! 겹치는 부분(이미 존재하는 값)이 있다면 해당 부분은 예외처리를 해준다.
9. 크기를 출력 

🐱‍👤 실제 코드

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

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());

        // 100 * 100 도화지 크기 배열
        int[][]paper = new int[100][100];

        // 검은색 영역의 넓이를 더할 count 변수 정의
        int count = 0;

        for (int k = 0; k < n; k ++) {

            // 공백으로 구분된 입력값을 처음에는 row, 후는 col이라는 변수로 정의
            StringTokenizer st = new StringTokenizer(br.readLine());
            int row = Integer.parseInt(st.nextToken());
            int col = Integer.parseInt(st.nextToken());

            // 도화지에 색종이를 넣기 위한 for문 10은 색종이 크기가 10 * 10이니깐
            for(int i = row; i < 10+row; i++) {
                for (int j = col; j < 10 + col; j++) {

                    // 겹치는 영역은 제외하기 위한 의문문(이미 존재하는데 수를 세는 것을 방지하기 위해)
                    if (paper[i][j] != 1) {
                        paper[i][j] = 1;
                        count++;
                    }
                }
            }
        }
        br.close();
        System.out.println(count);

    }
}

🤢 회고

특별히 어렵지는 않았던 문제였다. 그 후, 다른 사람들의 풀이를 보니 부르트포스 알고리즘이라는 단어를 사용하는 것을 보게되었는데, 이 부분에 대해서 이제 공부하면서 어떤 것인지 알아보도록 하자

profile
ABAPER를 꿈꾸는 개발자

0개의 댓글