문제 링크
https://www.acmicpc.net/problem/2563
문제
가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오.
예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다.
풀이
가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지를 space 리스트로 나타낸다. 리스트 안은 모두 0으로 채운다.
입력받은 검은색 색종이 넓이의 공간을 1로 바꿔준다.
space 리스트의 1인 부분을 구하면 검은 영역의 넓이이다.
코드
import sys
t = int(input())
space = [[0] * 100 for _ in range(100)]
for _ in range(t):
x, y = map(int, sys.stdin.readline().split())
for i in range(x, x + 10):
for j in range(y, y + 10):
space[i][j] = 1
area = 0
for k in range(100):
area += space[k].count(1)
print(area)
막힌 부분
처음에 검은색 색종이의 넓이에서 검은색 색종이끼리 겹치는 부분을 빼려고 하여 계산이 잘 되지 않았다.
알고보니 흰색 도화지의 면적을 리스트로 나타내면 검은색 색종이끼리 겹치는 부분을 구할 필요가 없었다.
반응형
'Algorithm > 백준 (BOJ)' 카테고리의 다른 글
[Python] 백준/BOJ 24060번: 알고리즘 수업 - 병합 정렬 1 (0) | 2023.02.26 |
---|---|
[Python] 백준/BOJ 4673번: 셀프 넘버 (0) | 2023.02.21 |
[Python] 백준/BOJ 4344번: 평균은 넘겠지 (0) | 2023.02.20 |
[Python] 백준/BOJ 8958번: OX퀴즈 (0) | 2023.02.20 |
[Python] 백준/BOJ 2744번: 대소문자 바꾸기 (0) | 2021.10.02 |