[알고리즘][X] 색종이

2024. 2. 6. 20:38알고리즘 풀이/Java

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

 

2563번: 색종이

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록

www.acmicpc.net

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int[][] whitePaper = new int[201][201];
        int n = Integer.parseInt(br.readLine());
        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            int row = Integer.parseInt(st.nextToken());
            int col = Integer.parseInt(st.nextToken());

            paintWhitePaper(whitePaper, row * 2, col * 2);
        }

        int sum = 0;
        for (int i = 0; i < 201; i++) {
            for (int j = 0; j < 201; j++) {
                if (whitePaper[i][j] == 1) {
                    if (i+1 < 201 && j + 1 < 201
                            && whitePaper[i+1][j] == 1 && whitePaper[i][j+1] == 1 && whitePaper[i+1][j+1] == 1) {
                        sum += 1;
                    }
                }
            }
        }
        System.out.println(sum / 4);
    }

    private static void paintWhitePaper(int[][] whitePaper, int row, int col) {
        for (int i = row; i <= row + 20; i++) {
            for (int j = col; j <= col + 20; j++) {
                whitePaper[i][j] = 1;
            }
        }
    }
}

나의 풀이

- 처음에는 배열 크기를 100으로 했다가 틀림

- 틀린 이유는 점 네 개가 모두 1인데도 불구하고 서로 맞닿지 않는 상황이 있었기 때문이다.

- 그래서 모든 크기를 2배로 해주고 합을 구하고 나누기 4를 해주었다.

'알고리즘 풀이 > Java' 카테고리의 다른 글

[알고리즘] 중위 순회  (0) 2024.02.12
[알고리즘] 절댓값 힙  (0) 2024.02.07
[알고리즘] 큐  (0) 2024.02.06
[알고리즘] 배열 돌리기 1  (1) 2024.02.06
[알고리즘] 트리 정리  (0) 2024.02.06