[문제 링크] 👉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)
👩💻 회고
원래는 겹치는 부분을 구하려고 온갖 수학식을 대동원해서 풀었는데 실패했다. 문제를 너무 직관적으로만 보고 생각한 것 같다.
'BOJ 코딩테스트 > Silver' 카테고리의 다른 글
[BOJ] 5212. 지구 온난화 (Python/구현/Silver 2) (0) | 2024.11.07 |
---|---|
[BOJ] 5635. 생일 (Python/구현/Silver 5) (0) | 2024.11.06 |
[BOJ] 2002. 추월 (Python/구현/Silver 2) (1) | 2024.10.29 |
[BOJ] 1021. 회전하는 큐 (Python/자료구조/Silver 3) (1) | 2024.10.29 |
[BOJ] 2161. 카드1 (Python/자료구조/Silver 5) (0) | 2024.10.29 |