알고리즘 연습/구현, 문자열

[🥈5 / 백준 2563 / 파이썬] 색종이

김세진 2021. 9. 20. 21:20
반응형

 

 

2563번: 색종이

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

www.acmicpc.net

 

문제

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오.

예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다.

입력

첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리이다. 색종이의 수는 100 이하이며, 색종이가 도화지 밖으로 나가는 경우는 없다

출력

첫째 줄에 색종이가 붙은 검은 영역의 넓이를 출력한다.

 

예제 입력 

3
3 7
15 7
5 2

예제 출력 

260


 

풀이

 

색종이가 붙여진 영역을 구하되, 중복되는 부분은 하나의 영역으로 계산하는 문제이다.

도화지와 색종이가 작고 색종이의 개수가 적기 때문에 일반적인 반복문으로도 답을 구할 수 있다.

 

우선 가로, 세로의 크기가 100인 도화지가 필요하니 101x101의 이차원 배열을 만들어준다.

그리고 주어진 x,y 좌표부터 시작하여 10x10 영역에 칠해주기만 하면 된다.

 

색종이가 도화지 밖으로 나가는 경우가 없으니 인덱스 오버플로우는 고려하지 않는다.

 

import sys
input = sys.stdin.readline

paper = [[0]*101 for i in range(101)]

for _ in range(int(input())):
    a,b = map(int,input().split())
    for i in range(10):
        for j in range(10):
            paper[a+i][b+j] = 1

r = 0
for i in paper:
    r += sum(i)
print(r)
반응형