Stay Hungry Stay Foolish

BOJ 코딩테스트/Silver

[BOJ] 2563. 색종이 (Python/구현/Silver 5)

dev스카이 2024. 11. 4. 18:01

[문제 링크] 👉https://www.acmicpc.net/problem/2563


풀이

💡 100x100 도화지의 각 좌표를 하나의 큰 이차원 배열로 생각하여 해당 위치를 차지하고 있는 색종이 위치를 체크

 

각 색종이의 좌표에 해당하는 영역을 배열에 표시한 다음, 전체 배열에서 검은색 영역의 넓이를 구하면 된다.

 

 

100x100 배열 생성

  • paper 배열을 만들어 도화지의 각 위치에 색종이가 붙었는지 확인할 수 있도록 한다.

색종이 붙이기

  • 각 색종이의 좌표 (x, y)에서 시작하여, 10x10 크기의 정사각형 영역에 해당하는 paper 배열의 값들을 1로 설정

검은 영역 계산

  • 모든 행을 순회하며 1로 설정된 영역을 합산하여 검은 영역의 넓이를 구한다.

 

Solution

N = int(input())  # 색종이 수
paper = [[0] * 100 for _ in range(100)]  # 100x100 크기의 도화지 배열 생성

for _ in range(N):
    x, y = map(int, input().split())
    # 색종이가 차지하는 영역을 1로 표시
    for i in range(x, x + 10):
        for j in range(y, y + 10):
            paper[i][j] = 1

# 검은 영역 넓이 계산
black_area = sum(sum(row) for row in paper)
print(black_area)

 

 

👩‍💻 회고

원래는 겹치는 부분을 구하려고 온갖 수학식을 대동원해서 풀었는데 실패했다. 문제를 너무 직관적으로만 보고 생각한 것 같다.